Eri*_*ric 2 c# java inheritance type-constraints
我试图将我在C#中编写的一些代码移植到Java,但还不知道所有的Java语法.我也不知道这种类型的东西叫什么,所以搜索起来比较困难.我称之为"继承约束".
基本上,是否存在与此C#代码等效的java:
public abstract class MyObj<T> where T : MyObj<T>, new()
{
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
编辑:
有没有办法做到这一点:
public abstract class MyObj<T extends MyObj<T>> {
public abstract String GetName();
public virtual void Test() {
T t = new T(); // Somehow instantiate T to call GetName()?
String name = t.GetName();
}
}
Run Code Online (Sandbox Code Playgroud)
不完全的.有这个:
public abstract class MyObj<T extends MyObj<T>>
Run Code Online (Sandbox Code Playgroud)
但是没有相当于new()约束的东西.
编辑:要创建一个实例T,你需要适当的Class<T>- 否则类型擦除将字节你.
通常,您将其添加为构造函数参数:
public MyObj(Class<T> clazz) {
// This can throw all kinds of things, which you need to catch here or
// propagate.
T t = clazz.newInstance();
}
Run Code Online (Sandbox Code Playgroud)