Я пишу свою пользовательскую карту, у нее есть настраиваемый массив пар, а Map использует пару для операций.Java: Generic Array Creation
Они носят общий характер, я не знаю, что их тип может быть целым, строковым или двойным. Поэтому я не могу использовать ArrayList, это запрещено для меня.
public class FMap<K, V> {
private FPair<K, V>[] data;
int capacity=23;
int used=0;
public FMap(int cap){
super();
capacity=cap;
used =0;
data = new FPair[ capacity];
for(int i=0; i< data.length; ++i)
data[i] = new FPair<K, V>();
}
Но компилятор сказал:
javac -g -Xlint BigramDyn.java
./TemplateLib/FMap.java:23: warning: [rawtypes] found raw type: FPair
data = new FPair[capacity];
^
missing type arguments for generic class FPair<A,B>
where A,B are type-variables:
A extends Object declared in class FPair
B extends Object declared in class FPair
./TemplateLib/FMap.java:23: warning: [unchecked] unchecked conversion
data = new FPair[capacity];
^
required: FPair<K,V>[]
found: FPair[]
where K,V are type-variables:
K extends Object declared in class FMap
V extends Object declared in class FMap
2 warnings
, если я использую data = new FPair<K, V>[capacity]
вместо data = new FPair[capacity]
Компилятор говорит:
TemplateLib/FMap.java:23: error: generic array creation
data = new FPair<K,V>[capacity];
^
1 error
-
И в равной функции карты: я делаю: БПМЖ
FMap<K,V> otherPair = (FMap<K,V>) other;
Но компилятор сказал:
./TemplateLib/FMap.java:34: warning: [unchecked] unchecked cast
FMap<A,B> otherPair = (FMap<A,B>) other;
^
required: FMap<A,B>
found: Object
where A,B are type-variables:
A extends Object declared in class FMap
B extends Object declared in class FMap
1 warning
Возможный дубликат [Ошибка компиляции: создание общего массива] (http://stackoverflow.com/questions/7863792/compilation-error-generic-array-creation) – Seelenvirtuose