Как избежать предупреждений Eclipse при использовании устаревшего кода без обобщений? - PullRequest
7 голосов
/ 15 апреля 2010

Я использую JSON.simple для генерации вывода JSON из Java. Но каждый раз, когда я вызываю jsonobj.put («this», «that»), в Eclipse я вижу предупреждение:

Тип безопасности: метод put (Object, Object) относится к необработанному типу HashMap. Ссылки на универсальный тип HashMap должны быть параметризованы

Чистое исправление было бы, если бы JSONObject был обобщен, но, поскольку это не так, я не могу добавить какие-либо параметры универсального типа, чтобы исправить это. Я хотел бы отключить как можно меньше предупреждений, поэтому добавление "@SuppressWarnings (" unchecked ")" ко многим методам непривлекательно, но есть ли у меня какой-либо другой вариант, кроме как мириться с предупреждениями?

Ответы [ 3 ]

7 голосов
/ 15 апреля 2010

Вот один из вариантов. Это немного уродливо, но позволяет ограничить подавленное предупреждение только этой отдельной операцией.

Добавить функцию, которая выполняет неконтролируемое приведение и подавлять предупреждения:

@SuppressWarnings("unchecked")
private final static Map<Object,Object> asMap(JSONObject j)
{
  return j;
}

Тогда вы можете вызвать его без предупреждения компилятора:

asMap(jsonobj).put("this", "that");

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

4 голосов
/ 15 апреля 2010

Напишите несколько вспомогательных методов или классов-оболочек для библиотеки. Добавьте @SuppressWarnings("unchecked") только к этим помощникам. Затем используйте помощники для взаимодействия с библиотекой.

4 голосов
/ 15 апреля 2010

вы можете иметь настройки компилятора для каждого проекта, и вы можете изменить эти предупреждения на ignore .

...