微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我需要调用以下方法.

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对象,这当然不太理想.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐