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

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

相关文章

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