2015-09-02 4 views
1

У меня есть два конструктора: normal ctor, который правильно инициализирует объект и второй по умолчанию ctor для Hibernate, который генерирует предупреждения о инициализации полей. Какой предпочтительный способ избавиться от предупреждений?checker framework: Supress Warnings в конструкторе по умолчанию

package test; 

public class Example { 
    String x; 

    public Example(String x) { 
     this.x = x; 
    } 

    Example() { 
     // Ctor for Hibernate, warnings generated here. 
    } 
} 

ответ

1

Вы не упомянули о том, чтобы посмотреть в документации, поэтому я не уверен, что вы это сделали. Checker Framework manual содержит раздел под названием "Suppressing warnings", который может содержать всю необходимую информацию.

Наиболее распространенный подход - написать @SuppressingWarnings annotation, что является стандартным способом подавления предупреждений от Java-компилятора.

Вы должны записать его на наименьший возможный элемент программы (например, объявление локальной переменной, а не весь конструктор или класс), и вы должны предоставить наиболее конкретный ключ. Причина заключается в том, чтобы избежать случайного подавления большего количества предупреждений, чем вы предполагали.

+0

Я просмотрел документацию и нашел раздел «Подавление предупреждений». Я не мог заставить его работать, но только что решил, что это не @SuppressWarnings («notnull»), а @SuppressWarnings («initialize»), чтобы избавиться от предупреждений. –

+0

Рад, что вы поняли это. Может быть полезно опубликовать фактический код и сообщение об ошибке, когда вы зададите вопрос; что указывало бы на проблему. Ключ @SuppressWarnings задается в начале сообщения об ошибке. – mernst

+0

Это оставляет проблему, что вы должны отключить проверку «необработанного токена в SupressWarnings», который я обычно установил в «Eclipse», который является позором, но не для конца света. Мне было интересно, могу ли я что-либо сделать с помощью квалификаторов, которые я еще не определил. Спасибо BTW! Большое спасибо –