Java 在抽象类中使用泛型方法时返回调用类
我有一个奇怪的问题,我无法理解。我想这是因为我不熟悉泛型Java 在抽象类中使用泛型方法时返回调用类,java,generics,abstract,Java,Generics,Abstract,我有一个奇怪的问题,我无法理解。我想这是因为我不熟悉泛型 public abstract class AbstractClass <T extends AbstractClass <T>> { //... public <T extends AbstractClass> T genericMethod(){ //do stuff return (T) this; } } 我想这是一种含蓄的施法方式。我怎样才能使代码更流畅,摆
public abstract class AbstractClass <T extends AbstractClass <T>> {
//...
public <T extends AbstractClass> T genericMethod(){
//do stuff
return (T) this;
}
}
我想这是一种含蓄的施法方式。我怎样才能使代码更流畅,摆脱这个多余的“myClass”?我很确定有一个明显的错误,但我看不出来。在这段代码中:
// this T
// v
public abstract class AbstractClass <T extends AbstractClass <T>> {
// and this T
// v
public <T extends AbstractClass> T genericMethod(){
//do stuff
return (T) this;
}
}
编译器知道第一个T
是什么-MyClass
,但不知道第二个T
应该是什么,所以它只使用上界-AbstractClass
。但是AbstractClass
中没有anotherMethod
,因此出现错误
您可能只需要一个T
:
public abstract class AbstractClass <T extends AbstractClass <T>> {
public T genericMethod(){
//do stuff
return (T) this;
}
}
公共抽象类AbstractClass{
公共T泛型方法(){
//做事
返回(T)这个;
}
}
在此代码中:
// this T
// v
public abstract class AbstractClass <T extends AbstractClass <T>> {
// and this T
// v
public <T extends AbstractClass> T genericMethod(){
//do stuff
return (T) this;
}
}
编译器知道第一个T
是什么-MyClass
,但不知道第二个T
应该是什么,所以它只使用上界-AbstractClass
。但是AbstractClass
中没有anotherMethod
,因此出现错误
您可能只需要一个T
:
public abstract class AbstractClass <T extends AbstractClass <T>> {
public T genericMethod(){
//do stuff
return (T) this;
}
}
公共抽象类AbstractClass{
公共T泛型方法(){
//做事
返回(T)这个;
}
}
谢谢你,伙计!这就解决了问题。你的解释也很有帮助。你说得对,我把一些东西弄混了,有一些太多了。谢谢你,伙计!这就解决了问题。你的解释也很有帮助。你是对的,我弄错了一些东西,有一些太多了。你的案例在类型参数标题下有更多的技巧,但整篇文章值得一读read@pafauk. 谢谢,但您已链接到此页面。:)啊,见鬼。现在应该可以工作了:)您的案例在类型参数标题下有更多技巧,但整篇文章值得一读read@pafauk. 谢谢,但您已链接到此页面。:)啊,见鬼。现在应该可以工作了:)
public abstract class AbstractClass <T extends AbstractClass <T>> {
public T genericMethod(){
//do stuff
return (T) this;
}
}