java传递实现接口的内部类
假设我有以下几点:
public class A {
//stuff
public class B implements I {}
}
public interface I {}
public class Foo {
int bar(I i) {}
}
现在,为什么Java会给我一个“不适用于类型…”的构建错误当我试图将B的一个实例传递给Foo时。bar()在A类的主体内
内部类是否被认为是I的正确实现,因为它包含在顶级类中
干杯,戴夫
# 1 楼答案
是的,这很好,但是如果实现接口的内部类是在grails服务中定义的
在这种情况下,我们将如何实例化
# 2 楼答案
在你的代码中,{},您应该声明内部类
B
有一个对A
的不合法引用,所以你需要一个A
(在A
的方法中的this
,在A
的上下文之外的new A()
,如果在你的应用程序中B
是A
的命名空间中的I
,而不是实际使用^static
:现在,以下措施应该可以奏效:
# 3 楼答案
我怀疑您可能有两个不同的
I
接口。确保在两个文件中导入相同的文件如果您不小心使用了两个同名的不同接口,这就是您(从Eclipse)得到的确切错误
作为参考,这对我来说很好:
# 4 楼答案
在创建对象B的实例之前,需要类a的实例(因为B是a的内部类)。 请尝试以下代码: