假设我有一个类层次结构如下:
class Vehicle; class Car extends Vehicle; class Plane extends Vehicle;
我有一个比较两个对象的功能
public <T extends Vehicle> generateDiff(T original,T copy)
在编译时,上述方法保证两个对象为Vehicle,但不能确保两个对象的类型相同.
generateDiff(new Car(),new Car()); //OK generateDiff(new Plane(),new Plane()); //OK generateDiff(new Car(),new Plane()); //WRONG
我可以在编译时使用泛型吗?
P.s:目前,如果两个对象的Class不一样,我已经实现了它会抛出异常.但我对此不满意.
提前致谢.
解决方法
是的,你可以(种)!
类型T的参数为inferred,但您可以指定类型:
MyClass.<Car>generateDiff(new Car(),new Plane()); // generates a compile error
新新200新新200 200 200 200 200:200 200 200 200: CE X- 200 200 200:200 200 200:20045 200 X-
generateDiff(new Car(),new Plane()); // type is inferred as Vehicle MyClass.<Vehicle>generateDiff(new Car(),new Plane());
上面的代码假定generateDiff()是一个静态方法.可新新新新旗新新新新新旗新新旗新旗新旗新旗新旗新旗新旗新新旗新旗新旗新旗旗