gpt4 book ai didi

Java泛型/抽象/内部类语法问题

转载 作者:行者123 更新时间:2023-12-02 08:35:58 28 4
gpt4 key购买 nike

我有以下内容:

public abstract class Foo<T>{
//contents of Foo //
...
public class Bar<Q> extends Foo<T>{
//contents of Foo.Bar //
...
}
}

后来,在另一个类和java文件中,我尝试使用外部抽象类作为父类(super class)型来构造上面内部Bar类的实例。更复杂的是,新类有它自己的泛型。以下不起作用:

public class SomeOtherClass<A>{
private Foo<A> x;

public SomeOtherClass(){
x = Foo<A>.Bar<A>();
}
}

但这不起作用;我尝试过的所有其他组合也没有。那么我该如何实例化x?可以在不删除 Foo 参数的情况下完成吗?我不想删除 Foo 的参数,因为它是抽象方法,其签名中具有通用参数。

最佳答案

要获取内部类的实例,您首先需要外部类的实例。由于示例中的 Foo 是抽象的,因此您无法实例化外部类。因此您也无法实例化内部类。

对于您的示例,您可以使用肮脏的技巧(因为没有要实现的抽象方法)

public class SomeOtherClass<A>{
private Foo<A> x;
public SomeOtherClass() {
//create anonymous extension of the abstract outer class
//for a real abstract class this would mean you have to
//implement all methods which are declared abstract
x = new Foo<A>(){};
x = x.new Bar<A>();
}
}

所以实际上你应该问自己你的类结构是否正确,是否需要访问抽象类(Foo)的内部类(Bar)而不真正需要封闭类。

关于Java泛型/抽象/内部类语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1773667/

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