Я немного нового в Java, но я действительно запутался, почему эти два «эквивалентные» заявления бросают различные ошибки:Частной конкретизация дженерик
public class SampleArray<T> implements Grid<T> {
public int x;
public int y;
private List<List<T>> grid = new ArrayList<List<T>>();
public SampleArray(int x, int y) {
this.x = x;
this.y = y;
}
}
Это прекрасно работает, от понимания его конкретизирует класс, который принимает обобщенный тип T и имеет свойства х, у, и список частной собственности, которая принимает список и T
public class SampleArray<T> implements Grid<T> {
public int x;
public int y;
private List<List<T>> grid;
public SampleArray(int x, int y) {
this.x = x;
this.y = y;
List<List<T>> this.grid = new ArrayList<List<T>>();
}
}
Это дает мне ошибку, а именно:
Syntax Error insert ";" to complete LocalVariableDeclarationStatement;
Syntax Error insert "VariableDelarators" to complete LocalVariableDeclaration
Прямо рядом с угловым кронштейном на T>> this.grid
. Почему я получаю эту ошибку? Разве они не эквивалентны, один экземпляр создается в разных местах? Интерфейс Grid - это всего лишь общий интерфейс
Это не имеет ничего общего с дженериками. Выполнение 'int this.x = x;' также недопустимо для Java. Почему, по-вашему, вам нужно повторить тип поля при инициализации this.grid? –
Вау ... я чувствую себя так ... тупой. Большое спасибо! –