我有一个类应该接受不同的数据类型作为第二个构造函数参数:
public abstract class QueryMatch {
String key;
Object input;
public <T> QueryMatch(String key, T o) {
this.key = key;
input = o;
}
public String getKey() {
return key;
}
public Object getValue() {
return input;
}
}
我不想使用类型参数,比如
public abstract class QueryMatch<T>{
String key;
T input;
...
这样,在将 QueryMatch 声明为泛型时,我会收到原始类型警告(因为我不知道它包含的数据类型)。但问题是我需要返回值,并且返回一个对象我并不完全舒服(这只是我,但这似乎不是一个好习惯?)。
此外,另一个类继承自它:
public class QueryMatchOr extends QueryMatch {
public QueryMatchOr() {
super("title", new ArrayList<String>());
}
public void addMatch(String match) {
((ArrayList<String>) input).add(match);
}
}
当然,我会收到 Unchecked cast 警告(我可以使用 @SuppressWarnings(“unchecked”) 避免这种情况)。
所以,我的问题是......有没有更好的方法来实现我想要做的事情?一个包含对象(可以有界)的抽象类,并返回它包含的数据类型(而不是对象)而不在类声明中使用类型参数?