Флаг Javac запрещает использование сырых типов?

Есть ли какой-либо флаг компилятора Java, который можно передать, чтобы сообщить компилятору запретить использование необработанных типов? То есть для любого общего класса давайте компилятору заставить использовать параметризованную версию и выдать ошибку компиляции в противном случае?

Ответ 1

JDK7 (b38) вводит -Xlint:rawtypes. Как упоминалось выше, -Xlint:unchecked предупреждает о непроверенных преобразованиях.

Маурицио Чимадамор из команды javac написал

Ответ 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
    }
}

С учетом предупреждения вы можете вернуться и исправить код, чтобы добавить дженерики к объявлениям.

Не идеально, и если я правильно помню, он все равно не поймает все.