Что это означает. Этот метод устарел, поскольку пользователь должен использовать соглашения Java 5.?

Я использую класс "ColumnPositionMappingStrategy" библиотеки opencvs. Этот класс имеет метод deprecated setType(Class<T> type) и, как указано в комментарии, "Этот метод устарел, поскольку пользователь должен использовать соглашения Java 5"

Насколько я понимаю, мне нужно использовать Generics вместо setType, например:

ColumnPositionMappingStrategy<MyClass> mappingStrategy = new ColumnPositionMappingStrategy<>();

решить проблему. Но я получаю NullPointerException, когда удаляю строку:

mappingStrategy.setType(MyClass.class);

ошибка:

java.lang.RuntimeException: Error parsing CSV!
at com.opencsv.bean.CsvToBean.parse(CsvToBean.java:95)
at com.opencsv.bean.CsvToBean.parse(CsvToBean.java:75)
at csv_import.ReadCsvFile.readRecordData(ReadCsvFile.java:40)
at app.Application.main(Application.java:30)

Caused by: java.lang.NullPointerException
at com.opencsv.bean.HeaderColumnNameMappingStrategy.createBean(HeaderColumnNameMappingStrategy.java:170)
at com.opencsv.bean.CsvToBean.processLine(CsvToBean.java:117)
at com.opencsv.bean.CsvToBean.processLine(CsvToBean.java:101)
at com.opencsv.bean.CsvToBean.parse(CsvToBean.java:91)
... 3 more

Что мне нужно сделать, чтобы решить эту проблему?


person mnish    schedule 05.04.2015    source источник
comment
Где взять NullPointerException?   -  person Paul Ruane    schedule 05.04.2015
comment
Другой подход, чтобы понять, что делать... обратиться к исходному коду этого класса; и посмотрите, что на самом деле делает setType(). Затем проверьте интерфейс класса на наличие альтернативы, чтобы сделать то же самое.   -  person GhostCat    schedule 05.04.2015
comment
@PaulRuane, пожалуйста, посмотрите на ошибку в вопросе.   -  person mnish    schedule 05.04.2015
comment
@EddyG HeaderColumnNameMappingStrategy имеет метод createBean, который использует Class<T> type для создания экземпляра класса, type задается методом setType, который устарел.   -  person mnish    schedule 05.04.2015


Ответы (1)


Реализация зависит от типа, вызывая:

public T createBean() throws InstantiationException, IllegalAccessException {
  return type.newInstance();
}

Некоторые комментарии, подобные этому — TODO refactor this class to use T instead of getType. — подразумевают, что аннотации @Deprecation использовались слишком рано, поскольку альтернативного использования не существует.

person fateddy    schedule 05.04.2015