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

前端之家收集整理的这篇文章主要介绍了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相关文章