2013-03-20 3 views
1
public interface MyInterface { 
    public ArrayList<Double> f(ArrayList<Double>... args); 
} 

Получаю предупреждение: Type safety: Potential heap pollution via varargs parameter paramOfChildren. Я могу подавить это предупреждение @SuppressWarnings("unchecked").Java: varargs in interface

Однако в каждом классе, который реализует этот интерфейс, я снова получаю это предупреждение. Интересно, есть ли способ подавить это предупреждение один раз для всех классов, реализующих интерфейс. Если нет, есть ли веская причина, что мы не должны этого делать?

+2

возможно дубликат [потенциального загрязнения кучи с помощью переменной длины параметра] (http://stackoverflow.com/questions/12462079/potential-heap-pollution-via-varargs -параметр) –

+1

Ну, я прочитал эту дискуссию, прежде чем спрашивать. Это не дает решение моего вопроса. В частности, «@SafeVarargs» не может использоваться, поскольку он находится в интерфейсе. – took

+2

Это информация, которую вы должны были включить в вопрос. Как мы хотим знать, что вы уже прочитали? В основном использование массивов общих типов в Java в основном проблематично ... вы должны ожидать, что это будет болезненно. –

ответ

0

вы можете придавить родовое:

class DoubleList extends ArrayList<Double> { 
    private static final long serialVersionUID = 1L; 
} 

interface MyInterface { 
    public DoubleList f(DoubleList... args); 
} 
+0

Это технически работает, но это поражает цель использования дженериков. – dimo414