我有下面的类层次结构,它只是实现了编码和解码来自给定字节数组的动物的想象功能。在泛型中的类型安全
public abstract class Animal {
}
class Tiger extends Animal{
private String name;
public void setName() {
}
public String getName() {
return this.name;
}
}
abstract class AnimalTransformer {
public static <T> T decodeAnimalFromBytes(byte[] animalInBytes) {
return null;
}
public static byte[] encodeAnimalInBytes(Animal animal) {
return null;
}
}
class TigerTransformer extends AnimalTransformer{
public static Tiger decodeAnimalFromBytes(byte[] animalInBytes) {
return new Tiger();
}
public static byte[] encodeAnimalinBytes(Tiger tiger) {
return new byte[0];
}
}
在从AnimalTransformer抽象类中延伸AnimalTransformer的TigerTransformer类覆盖的方法,我得到以下警告
Type safety: The return type Tiger for decodeAnimalFromBytes(byte[]) from the type
TigerTransformer needs unchecked conversion to conform to T
from the type AnimalTransformer
我明白这个警告的原因但不幸的是我不能解决它,因为我是泛型的新手。有人可以简要解释如何解决这个警告?
但我只需要以静态方式访问功能,即通过不实例化TigerTransformer,我想像TigerTransformer.encodeToBytes()那样访问它,因为实例化这种类不合逻辑。不能以静态方式访问? –
它不合逻辑吗?如果您需要,如果您担心多个实例,则可以将TigerTransformer作为单例提供。 (或者,更好的是,提供所有变压器的AnimalTransformers类)。如果你真的不想实例化它,那么使用继承和遗传是没有意义的 - 你可以选择其中一个。 – torquestomp
谢谢..我的意思是这个类只是提供了编码和解码的功能,所以用它们的类名称来调用它们,比如声明静态,我认为它比实例化更好。并且使用单例设计模式这些课程对我来说很好,所以我会一起去。 –