2014-11-11 6 views
1

Я работаю через учебник, который имеет следующий код:Сырые типов в Java

Entry<K,V>[] tempTable = (Entry<K,V>[]) new Entry[size]; 

Когда я компилирую с -Xlint, он говорит Entry справа, отсутствуют аргументы типа. Однако я не могу добавить аргументы типа, поскольку это приведет к созданию общего массива. Я думаю, мой вопрос состоит из двух частей:

  1. Я предполагаю, что код в тексте компилируется правильно, так что я могу сделать, чтобы сделать эту работу такой, как есть?
  2. Каков самый элегантный способ сделать это?
+1

Удивительно, есть ли проблема с -Xlint. Мой компилятор отлично подходит для кода. – markspace

+2

'(Entry []) new Entry [size];' НЕ гарантирует безопасность типа. Это всего лишь операция литья. –

+0

* «что-то, что я мог сделать, чтобы сделать эту работу» * Вы говорите, что не можете это скомпилировать? Я не совсем понимаю, о чем вы просите эту часть. – Radiodef

ответ

1

Лучше всего будет использовать интерфейс Collection, List к

1- сделать его более изящным и

2 избавиться от предупреждений

List<Entry<K, V>> tempTable = new ArrayList<>();  
tempTable.add(new Entry<Integer, Double>()); // or whatever object. 

I надеюсь это поможет.

Смежные вопросы