Java本地内部类中的访问方法

Java本地内部类中的访问方法,第1张

Java本地内部类中的访问方法

正如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()
方法。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5601322.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存