Объединение необработанных типов и общих методов

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

25
задан amaidment 2 August 2013 в 07:51
поделиться

2 ответа

Может быть интересно, что такое поведение может быть «решено». Используйте два интерфейса: базовый неуниверсальный интерфейс и универсальный интерфейс. Тогда компилятор знает, что все функции базового неуниверсального интерфейса не являются универсальными, и будет обрабатывать их следующим образом.

Это поведение очень раздражает, если использовать потоки и цепочку функций, и поэтому я решаю это следующим образом.

Использование через наследование интерфейса :

public interface GenericInterface<X extends Y> extends BaseInterface
{
    X getValue();
}

public interface BaseInterface
{
    String getStringValue();
}

Теперь вы можете выполнять следующие действия без предупреждения и без проблем:

GenericInterface object = ...;
String stringValue = object.getStringValue();
1
ответ дан prom85 2 August 2013 в 07:51
поделиться

Когда вы не используете обобщенный компилятор, он обрабатывает его как необработанный тип, и, следовательно, каждый универсальный тип становится Object, и поэтому вы не можете передать String[], так как ему нужно Object[]
. deal - если вы используете

List l = new ArrayList<String>();

Вы используете raw type, и все его элементы экземпляра заменяются его аналогами стирания. В частности каждый параметризованный тип, появляющийся в объявлении метода экземпляра, заменяется его необработанным аналогом. Подробнее см. JLS 4.8.

8
ответ дан Premraj 2 August 2013 в 07:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: