将 return 类型的方法设置为调用对象的类型
Setting return type of method to type of calling object
我有一个方法定义如下:
public TYPE getById(ObjectId id) {
return datastore.get(this.getClass(), id);
}
datastore.get()
的方法签名是:
<T, V> T get(Class<T> var1, V var2);
如何正确设置方法的 return 类型?请注意,由 datastore.get()
编辑的对象 return 与我实现的 class 不是同一类型,它可以是一个子 class。因此,我希望 return 类型特定于 class.
我的理解是你想要这样的东西:
public class Factory<T> {
public T getById(ObjectId id) {
return datastore.get(T, id);
}
}
public class Class1Factory extends Factory<Class1> {
public Class1 getById(ObjectId id) {
return datastore.get(Class1.class, id);
}
}
您必须使用单独的 Factory classes,因为您无法将 class 参数化为自身。你不能说:
public class Class1 extends Parent<Class1> {
...
}
我有一个方法定义如下:
public TYPE getById(ObjectId id) {
return datastore.get(this.getClass(), id);
}
datastore.get()
的方法签名是:
<T, V> T get(Class<T> var1, V var2);
如何正确设置方法的 return 类型?请注意,由 datastore.get()
编辑的对象 return 与我实现的 class 不是同一类型,它可以是一个子 class。因此,我希望 return 类型特定于 class.
我的理解是你想要这样的东西:
public class Factory<T> {
public T getById(ObjectId id) {
return datastore.get(T, id);
}
}
public class Class1Factory extends Factory<Class1> {
public Class1 getById(ObjectId id) {
return datastore.get(Class1.class, id);
}
}
您必须使用单独的 Factory classes,因为您无法将 class 参数化为自身。你不能说:
public class Class1 extends Parent<Class1> {
...
}