Extending some Super CSV cell processor generates unchecked
warning.
For example:
package test;
import org.supercsv.cellprocessor.FmtNumber;
public class CustomFmtNumber extends FmtNumber {
public CustomFmtNumber(String formatter) {
super(formatter);
}
}
When compiled with -Xlint:unchecked
produces following warning:
CustomFmtNumber.java:5: warning: [unchecked] execute(Object,CsvContext) in FmtNumber implements <T>execute(Object,CsvContext) in CellProcessor
public class CustomFmtNumber extends FmtNumber {
^
return type requires unchecked conversion from Object to T
where T is a type-variable:
T extends Object declared in method <T>execute(Object,CsvContext)
1 warning
CellProcessor
defines execute
as follows:
<T> T execute(final Object value, final CsvContext context);
FmtNumber
has indeed non-generic implementation of execute, like many other implementations. Why is it so?
Question is for Super CSV developers -- why use generic types in interface, when its not used, maybe create a non-generic interface beside CellProcessor
? Is this something you can target for your next release?