java - 传递一个扩展另一个类的类

标签 java class

我把我想做的事情煮成以下最少的代码:

public class TestClass {

    class Class2Extend {
    }

    class Foo {
        public Foo(Class<Class2Extend> myClass) {

        }
    }

    class Bar extends Class2Extend{

    }

    public TestClass() {
        new Foo(Class2Extend.class); // works fine 
            //new Foo(Bar.class); -> fails even though Bar extends Class2Extend - but I want something like this to have nice code
    }
}

我可以使用一个界面,但这样会更干净。任何人都可以给我一个关于这个问题的提示/技巧吗?

最佳答案

更改为:

class Foo {
    public Foo(Class<? extends Class2Extend> myClass) {

    }
}

当你说你的参数是 Class<Class2Extend> 类型时Java 与该参数类型完全匹配,而不是任何子类型,您必须明确指定您想要扩展 Class2Extend 的任何类。

关于java - 传递一个扩展另一个类的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9888770/

相关文章:

java - JPA - 如何使用规范和@EmbeddedId进行查询?

c++ - 自定义类 CLed 并不总是改变颜色

c# - 实现相同方法的表单

java - 在java中省略访问说明符

c++ - 将对象转换为 char* 以保存/加载

java - 如何自动更改 IntelliJ 中的方法/类访问级别?

java - 正确缩放图像的位置Java

java - 选择信息丰富的类名

java - 使用大括号 {} 的 MessageFormat

java - 当 concurrencyLevel 大于 ConcurrentHashMap 的容量时会发生什么?