我有一个名为Sport的基类,其中包含一些变量。我还有一些派生自Sport的不同类,如Volleyball、Soccer等,它们具有额外的方法和变量。它们看起来有点像这样。
public class Sport {
public String commonVar;
public Sport(String c) {
this.commonVar = c;
}
}
然后是排球:
public class Volleyball extends Sport {
public String onlyVolleyball;
public Volleyball(String c, String thisVar) {
super(c);
this.onlyVolleyball = thisVar;
}
}
现在我想把派生自Sport的类传递到其他地方的一个函数中,但是要使参数...
public otherFunction(int one, int two, Sport sport) { }
只将运动视为Sport对象(它会接受派生类,但我无法访问任何不通用于Sport的变量和方法)。我的问题是如何创建一个函数,能够发送所有类型的Sport衍生物而不丢失任何数据?
public Class<? extends Sport> c;
并在构造函数中从派生类中设置c。 - AhornerArrayList<String>
)之外,您无法进行动态转换,因为泛型声明确保了类型安全。如果您查看其源代码,您会发现E
用于表示扩展类型,在elementData()
方法中,该值被强制转换为(E) elementData[index]
,但是只有在它们彼此共享所有方法的情况下才适用。(ArrayList 源码:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java) - MrLore