Java - 如何即时创建 "anonymous"类

标签 java oop anonymous-class

我能做到:

new Object(){
    public void hi(){}
}.hi();

我如何(或我能否)做到这一点:

IWouldRatherStayAnonymous t = new IWouldRatherStayAnonymous extends Thread(){
    public void NoNoYouCantCallMe(String s){}
};
t.NoNoYouCantCallMe("some useful data that i will need later, but don't want to save this anonymous class");

如果我不能在语法上做到这一点,谁能解释为什么这永远行不通的逻辑/实现设计?

==========================================

编辑:澄清 - 我想创建一个匿名类而不保存它,然后实例化该匿名类的一个实例。我只需要 1 个引用,因为我不打算经常使用这个引用(我也不希望在同一个外部类中使用它)。但是,我只想将一些数据传递给这个匿名类一次(理想情况下是构造函数,但您会注意到您实际上不能重写 Thread() 中的构造函数)。

这真的不是什么大不了的事,我只是好奇这是否可行,但从一些答案看来它是可行的,但不是很漂亮。

最佳答案

你的问题有点令人困惑,但听起来你想要一个既扩展了 Thread 又实现了一些接口(interface)的类,但是在它所使用的方法之外无法访问它 (这甚至会排除私有(private)嵌套类)。在那种情况下使用 local class :

void myMethod() {
    class Impl extends Thread implements SomeInterface {
        @Override
        public void someInterfaceMethod(String s){ }
    }
    new Impl().someInterfaceMethod("data");
}

编辑:为了响应您的更新,您自然可以给本地类一个构造函数并传入数据,或者让它关闭外部的 final 变量方法。

关于Java - 如何即时创建 "anonymous"类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18455870/

相关文章:

java - 使用 Maven 构建 PMD jar

Java ImageIO.read(getClass().getResource()) 返回 null

c# - 无法访问派生类中的 protected 方法

c# - 什么是空接口(interface)?

java - 从 Callable 返回的本地类的序列化

python - 如何在Dart中创建某些类类型的对象的列表?

javax.websocket - 传递消息超时

java - Java中<>里面的数据类型有什么作用?

PHP DataMapper 模式 : My class needs an instance of PDO, 我想将它包装在 Db 类中

c# 创建某物的实例对象