我有一些结构如下的类:
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 param)
至
void func(A.B param)
但是我不想这样做,因为我想使用
Asub.B
中定义的一些替代功能,但是如果我将param
类型更改为A.B
而不是B
,则短绒棉绒告诉我Asub.B
未使用如果能解决此问题,我将不胜感激;如果无法解决,请提供一种可能的替代方法来实现我想要的功能
这个问题的实际背景与Android的
RecyclerView.Adapter
和ViewHolder
有关,但我认为问题不存在于此 最佳答案
我相信这里最好的选择是使用泛型。
遵循以下原则
abstract class A<T extends A.B> {
class B {
// ...
}
abstract void func(T param) {
//..
}
}
class Asub<Asub.B> extends A {
class B extends A.B {
// ...
}
@Override
void func(Asub.B param) {
// ...
}
}
应该应该做的工作。
关于java - 对应于扩展super的内部类的内部类的方法的参数类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48829122/