我有一些像这样的代码:
public abstract class Foo {
public static Foo getFoo() {
return new FooImpl();
}
abstract void DoFoo();
private class FooImpl extends Foo {
public FooImpl() { }
@Override
void DoFoo() { }
}
}
但Eclipse告诉我没有封闭的Foo类型的实例是可访问的.那我怎么能让它运作起来呢?
我试图让它尽可能简单,看它是否会编译:
public abstract class Foo {
public static Foo getFoo() {
return new FooImpl();
}
private static class FooImpl extends Foo {
public FooImpl() { }
}
}
我仍然得到同样的错误.我错过了什么?
固定!我更改了行返回new FooImpl();返回新的Foo.FooImpl();
解决方法:
优秀的解释here – 简而言之,你需要使类FooImpl静态,所以它只绑定到外部类,而不是外部类的特定实例(你没有). getFoo方法看起来也应该是静态的,顺便说一下 – 否则,你打算在什么时候调用Foo?
标签:java,factory-pattern 来源: https://codeday.me/bug/20190715/1472967.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。