我有一个带有通用变量的类。我想将该变量限制为一个集合 类型(如汽车、自行车……)如下所示:
class Garage{
Class<K> ownerStaff;
public Garage(Car c){
this.ownerStaff = c;
}
public Garage(Bike b){
this.ownerStaff = b;
}
...
}
因此,“genericVariable”只能是汽车、自行车或我想要的任何其他类型,但不能是任何类型。我怎样才能做这样的事情?
注意: 我想我可以创建一个父类“Vehicle”,然后这样写(如果我错了,请纠正我)
class Garage<K extends Vehicle>{
Class<K> ownerStaff;
public Garage(Class<K> c){
this.ownerStaff = c;
}
}
但我不想要一个父类并让我的所有类扩展“Vehicle”,并且我可能不想输入例如Garage<Car>
当我实例化一个“车库”时。
谢谢
最佳答案
你的对象最终必须有某种共同的行为,否则将它们放在同一个Garage
中就没有意义。因此,正如 @perelman 建议的那样,只需在接口(interface)中声明此常见行为并使用它(无泛型):
public interface Vehicle {
// common behavior declared, if any
}
public class Car implements Vehicle {
// Implementation
}
public class Bike implements Vehicle {
// Implementation
}
public class Garage {
Vehicle vehicle;
public Garage(Vehicle v) {
vehicle = v;
}
}
关于java - 如何将泛型类型限制为 java 中的特定类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9239343/