我有以下类(class)(这只是一个简化的例子):
public abstract class Material {
public abstract String name();
/* ... */
}
public class Wood extends Material {
@Override
public String name() {
return "<WOOD>";
}
/* ... */
}
public class Metal extends Material {
@Override
public String name() {
return "{Metal}";
}
/* ... */
}
public class Car<T extends Material> {
public void printName() {
System.out.println(T.name()); // Here is the problem!
}
/* ... */
}
public class Main {
public static void main(String[] args) {
Car<Wood> myCar1 = new Car<Wood>();
Car<Metal> myCar2 = new Car<Metal>();
myCar1.printName();
myCar1.printName();
}
}
问题在代码中指出。
最佳答案
这可能是我实现它的方式。对于你的情况是否令人满意,我不知道。
enum Material {
WOOD("<WOOD>"),
METAL("{Metal}");
String name;
private Material(String name) {
this.name = name;
}
public String toString() {
return name;
}
}
class Car {
Material material;
public Car(Material material) {
this.material = material;
}
public void printName() {
System.out.println(material);
}
}
public class Main {
public static void main(String[] args) {
Car myCar1 = new Car(Material.WOOD);
Car myCar2 = new Car(Material.METAL);
myCar1.printName();
myCar2.printName();
}
}
关于java - 泛型 java 类中的反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4214500/