java - 如何调用对象实例化时定义的方法?

标签 java

想知道如何调用公共(public) m 方法吗?

public class Test1 {

    public static void main(String[] args) {
        Test1 test = new Test1() {
            public void m() {
                System.out.println("m");
            }
        };
    }
}

最佳答案

我不相信你可以。您必须创建一个接口(interface)或子类。 (嗯,好吧,这可能不是真的。你可以通过反射(reflection)来做到这一点。)

例如,像这样(构建后通过 test.m() 调用):

public class Test1 {

    public static void main(String[] args) {
        SubTest1 test = new SubTest1() {
            public void m() {
                System.out.println("m");
            }
        };
        test.m();
    }

    private static abstract class SubTest1 extends Test1 {
        public abstract void m();
    }
}

或者像这样,在构建过程中发生的地方:

public class Test1 {

    public static void main(String[] args) {
        SubTest1 test = new SubTest1() {
            public void m() {
                System.out.println("m");
            }
        };
    }

    private static abstract class SubTest1 extends Test1 {
        public SubTest1() {
            this.m();
        }

        public abstract void m();
    }
}

can't define an anonymous class constructor , 因此最后使用 SubTest1 类的构造函数和抽象方法。

关于java - 如何调用对象实例化时定义的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17032710/

相关文章:

java - JPA事务隔离和实体锁的区别

java - OpenCV:多米诺骨牌圆点/圆盘检测

java - 使用 Inspektr 审核 Spring 应用程序时无输出 - 不使用 CAS

java - 如何设置MQTT协议(protocol)中的protobuf格式

java - Spring Boot - 外键 PostgreSQL 数据库中的空值

java - 为什么我不能在 Hibernate/Struts 中访问新创建的记录?

java - 为什么我的 Eclipse 加载时会出现虚拟断点和旧错误?

java - 建立多个连接的 Android WebSocket 服务

java - 使用 Jax-RS 发布

java - 根据继承类型重新初始化变量