2016-06-12 2 views
0

Если у меня есть карта .. Входа объекты, и у меня есть массив в классеМассив родовых владельцев

private Entry<K,V> array; 

Могу ли я сказать

array = new Entry[someInt]; 

, который я сделал, или нужна ли мне напечатанный как мой инструктор говорит, необходимо, например, как

array = (Entry<K,V> E[]) new Entry[someInt]; 

Обратите внимание, что первый один сделал работу, когда я пробежала JUnits.

+0

Почему бы вы изменить обратно на изменения коды форматирования я сделал ?? У вашего кода есть угловые скобки в нем –

+0

Первое решение - плохая практика, вторая имеет опечатку: 'array = (Entry []) new Entry [someInt];' –

ответ

0

Вы задумывались над тем, чтобы сделать список?

Entry<K,V> array = new ArrayList<Entry<K,V>>(); 
array.add(new HashMap<K,V>()); 
+0

Мне нужно использовать backingArray, но я просто задаваясь вопросом, действительно ли кастинг нужен – user3338275

+0

О, получилось. При использовании классов фреймворка Java java, например. ArrayList, LinkedList или HashSet и т. Д. Они принимают объект типа java.lang.Object, который позволяет вставлять любой объект в коллекцию. Когда мы извлекаем Object из коллекции, они имеют тип java.lang.Object, который должен быть включен для выполнения операции. У меня нет всего вашего кода перед собой, поэтому я не могу сказать вам, можем ли мы сделать объявление без получения исключения Cast Cast. – John

+0

Мы в основном реализуем нашу собственную хэш-карту. И первый способ не дает мне никаких исключений и работает отлично, но мой профессор говорит, что это проблема. – user3338275

0

Вы можете сделать любой из них. Неявные преобразования в исходные типы и из них разрешены без приведения.

array = new Entry[someInt]; будет выдавать необработанное предупреждение о преобразовании.

array = (Entry<K,V>[])new Entry[someInt]; произведет предупреждение без предупреждения.

Так что ни один из них не лучше другого.

Обратите внимание, что если вы создаете массив с типом группового символа, вам нужно будет иметь роли:

array = (Entry<K,V>[])new Entry<?,?>[someInt]; // compiles 
array = new Entry<?,?>[someInt];    // doesn't compile 
Смежные вопросы