gpt4 book ai didi

java - 方法的参数类型对应扩展super内部类的内部类

转载 作者:太空狗 更新时间:2023-10-29 16:26:42 25 4
gpt4 key购买 nike

我有一些类结构如下:

class A {
inner class B {}

void func(B param) {}
}

class Asub extends A {
inner class B extends A.B {}

@Override
void func(B param) {} // problematic line
}

但是编译器不允许它作为一个适当的覆盖,只有当我改变时才允许它(在 Asub 中)

void func(B 参数)

void func(A.B 参数)

但是我不想这样做,因为我在 Asub.B 中定义了一些我想使用的覆盖功能,但是如果我更改 param 类型A.B 而不是 B,linter 告诉我 Asub.B 未使用

对于解决此问题的任何帮助,我将不胜感激,或者如果不可能,请提供一种可能的替代方法来完成我想要的功能

这个问题的实际上下文与 Android RecyclerView.AdapterViewHolder 有关,但我认为问题不在于此

最佳答案

这与内部类无关,这里的问题是你不能用 f(B extends A) 覆盖函数 f(A),因为所有被覆盖的方法都必须能够接受所有允许的参数对于 super 方法。

您当然可以始终在覆盖方法中强制转换为子类型。

关于java - 方法的参数类型对应扩展super内部类的内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48829122/

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