gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:16:37 27 4
gpt4 key购买 nike

我实例化了一个匿名类的对象,并向其中添加了一个新方法。

Date date = new Date() {
public void someMethod() {}
}

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

date.someMethod();

最佳答案

好问题。答案是否定的。您不能直接调用 date.someMethod();
我们先来了解一下这是什么。

Date date = new Date()  { ... }; 

上面是匿名(没有名字)子类,它扩展了 Date 类。

当您看到如下代码时,

    Runnable r = new Runnable() {

public void run() {

}

};

这意味着您已经定义了匿名(没有名称)类,该类正在实现(而不是扩展)Runnable 接口(interface)。

所以当你调用date.someMethod()时它无法调用,因为 someMethod superclass. 中定义在上面的例子中,父类(super class)是 Date类(class)。它遵循简单的覆盖规则。

但是如果你想打电话 someMethod然后是以下步骤。

第一种方式>
使用引用变量 ' date '
date.getClass().getMethod("someMethod").invoke(date);

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

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

关于java - 从匿名类调用新定义的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60351461/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com