gpt4 book ai didi

Java泛型类型的推断

转载 作者:行者123 更新时间:2023-12-02 07:41:36 25 4
gpt4 key购买 nike

我有这样的类结构:

class A1,A2,..,An extends A;
class B1,B2,..,Bn extends B;

以及转换 Ai 的类进入Bi :

    private B1 convert(A1 a1){}
...
private Bn convert(An an){}

如何定义具有像<? extends B> convert(<? extends A> a)这样的签名的单个公共(public)方法?现在我只有这个方法:

    B convert(A a){
if(A.getClass().equals(A1.class)){
return convert((A1)a);
}...
}

如果性能很重要并且该方法会被频繁调用,我可以使用instanceof吗?

最佳答案

更优雅的解决方案可能是在 A 中声明一个方法:[最好是 abstract,如果 Aabstract]:

public abstract B toB();

重写类(A1、A2...)必须重写它并实例化它们自己的 B 对象。

代码快照 [使用 static 修饰符,因为我将其实现为内部类,如果类是外部类,则不需要且不能使用它]:

public abstract static class A { 
public abstract B toB();
}
public static class A1 extends A {
@Override
public B1 toB() {
return new B1();
}

}

public static class B {

}
public static class B1 extends B {

}

关于Java泛型类型的推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11519415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com