Есть ли какой-либо флаг компилятора Java, который можно передать, чтобы сообщить компилятору запретить использование необработанных типов? То есть для любого общего класса давайте компилятору заставить использовать параметризованную версию и выдать ошибку компиляции в противном случае?
Флаг Javac запрещает использование сырых типов?
Ответ 1
JDK7 (b38) вводит -Xlint:rawtypes
. Как упоминалось выше, -Xlint:unchecked
предупреждает о непроверенных преобразованиях.
Ответ 2
Вы можете настроить использование необработанных типов в Eclipse как предупреждение или ошибку.
В разделе "Предпочтения/Java/Компилятор/Ошибки и предупреждения/Общие типы/Использование необработанного типа.
javac
не имеет ничего подобного, насколько я знаю - даже с -Xlint:all
вы не получите предупреждение для чего-то вроде:
ArrayList x = new ArrayList();
Ответ 3
Вы можете получить его, чтобы предупредить вас через:
-Xlint: непроверенный
Это приведет к предупреждению в некоторых, но не во всех случаях отсутствия генериков.
import java.util.ArrayList;
import java.util.List;
public class Main
{
public static void main(final String[] argv)
{
List list = new ArrayList(); // no warning at all
list.add("Hello"); // warning will be on this line
}
}
С учетом предупреждения вы можете вернуться и исправить код, чтобы добавить дженерики к объявлениям.
Не идеально, и если я правильно помню, он все равно не поймает все.