Data 类型中的方法 insert(String, Class<T>) 不适用于参数

The method insert(String, Class<T>) in the type Data is not applicable for the arguments

我想要一个接受泛型类型参数的函数,但我收到了使用它的错误消息。如何在 Java 中正确使用泛型?

Plane plane = new Plane();
Car car = new Car();
data.insert("fast", car);
data.insert("super fast", plane);
...
<T> void insert(String a, Class<T> object) {
    System.out.println("Inserting " + object.getName() + a);
}

您的插入函数需要一个像 Plane.class 这样的 Class 对象,这就是 object.getName() 已知的原因。

我认为你的意图是这样的:

<T extends HasName> void insert(String a, T object) {
    System.out.println("Inserting " + object.getName() + a);
}

其中 HasName 是一个接口(也可以是超级 class),方法 getName,由 Car 和 Plane 实现(扩展)。 这样才能保证object.getName()可以被调用。