Javac флаг, чтобы запретить сырые типы? - PullRequest
10 голосов
/ 30 марта 2009

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

Ответы [ 3 ]

12 голосов
/ 30 марта 2009

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

Маурицио Симадаоре из команды javac написал запись в блоге об этом.

6 голосов
/ 30 марта 2009

Вы можете настроить использование необработанных типов в Eclipse как предупреждение или ошибку.

Он находится в разделе «Предпочтения» / Java / Компилятор / Ошибки и предупреждения / Общие типы / Использование необработанного типа.

Насколько я знаю,

javac не имеет ничего подобного - даже с -Xlint:all вы не получите предупреждение о чем-то вроде:

ArrayList x = new ArrayList();
5 голосов
/ 30 марта 2009

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

-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
    }
}

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

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

...