java api определяет несколько дженериков и не-генериков с тем же именем - например, LinkedList
и т. Д. Они оба разрешены с использованием того же оператора import java.util.LinkedList;
. Но в одном пакете может быть только один открытый класс в .java-файле (с тем же именем).общий и не общий одноименный номер
Так мы можем получить тот же эффект? Я попытался следующий код:
package org.****.ai.ass1.part1;
import java.util.LinkedList;
public abstract class Test extends LinkedList { }
//public abstract class Test<E> extends LinkedList<E> { }
Без комментария, я получаю следующее сообщение об ошибке: The type Test is already defined
. Однако обе строки компилируются, если я комментирую другую. Итак, как это делает java api?
, чтобы сделать его более понятным: вы можете использовать экземпляр универсального класса, такого как не-общий класс (когда вы не обращаете внимание на предупреждения компилятора) – Ralph
@Ralph: Это менее понятно для меня. Это тот же класс, с той же реализацией. С некоторыми ограничениями вы даже можете привести экземпляр из не общего типа в общий тип (возможно, наоборот, я не уверен). –
вот что я имею в виду: общий класс тот же. Информация о конкретном родовом типе «вставлена», когда вы используете его (его экземпляр). Если вы не «ввели» эту общую информацию, вы используете общий класс, например, если у него нет дженериков. - Во всяком случае: это не была какая-то критика в вашем ответе (потому что это правильно). Я только хочу объяснить это немного больше, как дженерики работают по этому вопросу. – Ralph