正如ILikeTau的评论所说,您无法访问在方法中定义的类。您可以在方法之外定义它,但是另一种可能性是定义一个
interface(或抽象类)。这样,代码仍将位于您的方法内部,并且可以访问
final该方法中定义的变量和参数(如果将整个类移到外面,则无法执行此 *** 作)。就像是:
class Outer { int a = 100; public interface AnInterface { void mInner(); // automatically "public" } AnInterface mOuter() { // note that the return type is no longer Object class Inner implements AnInterface { @Override public void mInner() { // must be public int y = 200; System.out.println("mInner.."); System.out.println("y : " + y); } } Inner iob = new Inner(); return iob; }}class Demo { public static void main(String[] args) { // the preferred syntax Outer t = new Outer(); Outer.AnInterface ob = t.mOuter(); ob.mInner(); }}
注意: 未测试
请注意,返回类型和的类型
ob已从更改
Object。这是因为在Java中,如果将某物声明为an
Object,则只能访问为定义的方法
Object。编译器必须在编译时(而不是在运行时)知道您的对象
ob有一个
mInner方法,并且无法知道它唯一知道的是它是一个方法
Object。通过将其更改为
AnInterface,编译器现在知道它具有
mInner()方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)