java – 从匿名类调用新定义的方法

我实例化了一个我添加了一个新方法的匿名类的对象.
Date date = new Date() {

      public void someMethod() { }

    }

我想知道是否可以从外部调用这种方法类似于:

date.someMethod();

解决方法

好问题.答案是否你不能直接调用date.someMethod();
我们先来了解这是什么.
Date date = new Date()  { ... };

以上是延续Date类的匿名(没有名称)子类.

当你看到代码,

Runnable r = new Runnable() {

        public void run() {

        }

    };

这意味着您已经定义了正在实现(不扩展)Runnable接口的匿名(没有名称)类.

所以当你调用date.someMethod()它将无法调用,因为someMethod没有在超类中定义.在上面的例子中,超类是Date类.它遵循简单的首要规则.

但是如果你想调用someMethod,那么以下是步骤.
Fisrt方式>参考变量’date’
.date.getClass()getMethod( “的someMethod”)调用(日期).

第二种方式>
用新建的Date类的匿名子类的对象.

new Date() 
{
    public void someMethod() {
          System.out.println("Hello");
    }
}.someMethod();   //this should be without reference 'date'

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...