加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将内联构造的类作为Class参数传递给方法

发布时间:2020-12-15 04:27:07 所属栏目:Java 来源:网络整理
导读:我需要调用以下方法. void foo(Class? extends Bar cls); 对于cls参数,我需要传递一个只覆盖Bar的单个方法的类. 我想知道是否有一种方法可以在上面的调用本身中编写我的新类的内联定义,而无需在扩展Bar的单独文件中编写新类. 解决方法 三种选择: 您可以在要
我需要调用以下方法.

void foo(Class<? extends Bar> cls);

对于cls参数,我需要传递一个只覆盖Bar的单个方法的类.

我想知道是否有一种方法可以在上面的调用本身中编写我的新类的内联定义,而无需在扩展Bar的单独文件中编写新类.

解决方法

三种选择:

>您可以在要使用此代码的同一个类中创建嵌套类;不需要新文件

public static void doSomething() {
    foo(Baz.class);
}

private static class Baz extends Bar {
    // Override a method
}

>您可以在方法中声明一个命名类:

public static void doSomething() {
    class Baz extends Bar {
        // Override a method
    }
    foo(Baz.class);
}

在这样的方法中声明一个类是非常不寻常的,请注意.
>您可以使用匿名内部类,但然后调用getClass():

public static void doSomething() {
    foo(new Bar() {
        // Override a method
    }.getClass());
}

最后一个选项创建一个匿名内部类的实例,只是为了获得Class对象,这当然不太理想.

就个人而言,我可能会选择第一个选项.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读