我能做到:
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/