我有非通用的父类。
public class FilterCondition {
private String key;
private String value;
private String condition;
}
我有一个通用子类。
public class FilterJoinCondition<P,S> extends FilterCondition {
public FilterJoinCondition(String key, String value, String condition) {
super(key, value, condition);
}
private Class primaryEntity;
private Class secondaryEntity;
private String mappedBy;
}
我将所有FilterCondition
存储在List
中,并传递给需要将类型传递给FilterJoinCondition
的方法
if (condition instanceof FilterJoinCondition) {
FilterJoinCondition<P,S> joinCondition = (FilterJoinCondition) condition;
}
我知道这是不正确的(上面的代码)。
如何在不知道类型(P,S)的情况下投射FilterCondition
?
答案 0 :(得分:0)
您可以只使用?
占位符。显然,您将无法使用需要了解特定类型的新joinCondition
做事。但是您可以做的所有常规操作都很好。
public class FilterJoinCondition<P,S> extends FilterCondition {
private Class primaryEntity;
private Class secondaryEntity;
private String mappedBy;
public FilterJoinCondition(String key, String value, String condition) {
super(key, value, condition);
}
public void doStuff(P param) {
System.out.println(param.getClass());
}
public static void main(String[] args) {
FilterCondition condition = new FilterJoinCondition<>("foo", "bar", "baz");
if (condition instanceof FilterJoinCondition) {
FilterJoinCondition<?,?> joinCondition = (FilterJoinCondition) condition;
joinCondition.doStuff(new String()); //illegal, you do not know P!
}
}
}