需要创建一个自定义类型的方法

时间:2015-04-06 08:48:53

标签: java generics wildcard

我有一个如下所述的方法:

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) {  
    }   
} 

1 个答案:

答案 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的构造函数。