-7

我有以下情况。现在我需要从另一个类调用方法二,我该怎么做?在java中,您可以在方法中声明一个类。

public class Name {
    void methodOne() {
        class InnerClass {
           void methodTwo() {
           }
         }
     }
 }
4

1 回答 1

2

我已经在 J​​ava中对此进行了测试并打印了消息:

class Foo {
    void bar() {
        class Baz {
            void hi() {
                System.out.println("Hi");
            }
        }
        Baz baz = new Baz();
        baz.hi();
    }
}

对于非 Java 程序员,这会导致非常奇怪,但它是匿名类的基础

现在我需要从另一个类调用 methodTwo

由于Baz该类在bar方法内部,因此您不能在此方法之外使用它。唯一可以这样做的情况是,此类Bar实现了一个公共接口(或扩展了一个公共 [抽象] 类),该接口可以被另一个类使用。例如:

interface Polite {
    void hi();
}

class Bud {
    void aMethod(Polite polite) {
        polite.hi();
    }
}

class Foo {
    void bar() {
        class Baz implements Polite {
            @Override
            public void hi() {
                System.out.println("Hi");
            }
        }
        Polite baz = new Baz();
        Bud bud = new Bud();
        bud.aMethod(baz);
    }
}
于 2013-04-26T21:41:35.527 回答