Jeśli typ generyczny T extends Numeric
wtedy zmienna DEFAULT_VALUE_FOR_NULL
powinna przyjąć wartość 0. Jeśli T extends String
to wartość "".
Jak to teraz zrobić, by nie zmuszać do przekazywania w konstruktorze tej zmiennej DEFAULT_VALUE...
próbowałem tak, ale nie działa, bo kompilator nie zna jeszcze T
:
public class Alg1 <T> implements IAlgorithm1<T>{
private Optional<T> result;
private String text;
final private IAlgorithm<T> ENGINE;
final private String SPLITERATOR = "\\s*(<br>|<p>)\\s*"; // new line
final private String KEY_WORD;
final private T DEFAULT_VALUE_FOR_NULL;
public Alg1(String text, IAlgorithm<T> engine, String keyWord) {
this.text = text;
this.ENGINE = engine;
this.KEY_WORD = keyWord;
if(T instanceof Numeric){
this.DEFAULT_VALUE_FOR_NULL = 0;
}
if(T instanceof String){
this.DEFAULT_VALUE_FOR_NULL = "";
}
init();
//...
}