[英]Casting from Non-generic base class to Generic Sub class
我有非通用父 class。
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
?
你可以只使用?
占位符。 顯然,您將無法使用新的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!
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.