我是 Java 新手(有 C# 经验),
这就是我想做的:
public final class MyClass
{
public class MyRelatedClass
{
...
}
}
public class OtherRandomClass
{
public void DoStuff()
{
MyRelatedClass data = new MyClass.MyRelatedClass();
}
}
这在 Eclipse 中给出了这个错误:
无法访问 BitmapEffects 类型的封闭实例。必须使用 BitmapEffects 类型的封闭实例来限定分配(例如 x.new A(),其中 x 是 BitmapEffects 的实例)。
这在 C# 中用静态类是可能的,这里应该怎么做呢?
你定义的方式MyRelatedClass
,你需要有一个的实例 MyClass
能够访问/实例化此类。
通常在 Java 中,当以下情况时使用此模式:MyRelatedClass
需要访问 a 的某些字段MyClass
实例(因此在编译器警告中引用了“封闭实例”)。
像这样的东西应该编译:
public void doStuff() {
MyClass mc = new MyClass();
MyRelatedClass data = mc.new MyRelatedClass();
}
然而,如果一个MyRelatedClass
实例不需要访问其封闭实例的字段(MyClass
的字段)那么你应该考虑定义MyRelatedClass
作为静态类,这将允许您发布的原始代码进行编译。
嵌套类(您发布的内容)和静态嵌套类(astatic class
在一个class
)是在前者中,嵌套类属于的实例父类,而后者没有这样的关系——只有逻辑/命名空间关系。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)