我有一个如下所述的方法:
protected Super<?> generateSuper(Serializable object) throws IOException {
Object data = getData(object);
Super<Object> sup = new SuperImpl<Object>(data);
return sup;
}
在这一行,我想传递自定义类型。我怎样才能做到这一点? 例如:我想创建任何其他类类型的超级。 我可以将任何参数传递给可以在方法中的byte []位置传递的方法吗?
SuperImpl类看起来像:
public class SuperImpl<T> implements Super<T>{
public SuperImpl(T data) {
}
}
答案 0 :(得分:1)
您必须创建一个通用方法:
protected <T> Super<T> generateSup(Serializable object) throws IOException {
T data = getData(object); //questionable
Super<T> sup = new SuperImpl<T>(data);
return sup;
}
您可以将其称为:
<byte[]>generateSup(object);
//or
<String>generateSup(anotherObject);
//or
<OtherClassType>generateSup(someOtherObject);
但是,你必须确定一件事。
您必须确保getData(object)
返回T
。如果这样做,这个方法将编译。否则,如果getData(object)
总是返回Object
,则必须在SuperImpl
类中提供一个使用Object
的构造函数。