2015-04-06 76 views
0

的方法我有一個方法如下所述:需要創建一個自定義類型

protected Super<?> generateSuper(Serializable object) throws IOException { 
     Object data = getData(object); 
     Super<Object> sup = new SuperImpl<Object>(data); 
     return sup; 
} 

在此行中,我想通過自定義類型。我怎樣才能做到這一點?例如:我想創建任何其他類類型的Super。 我可以將任何參數傳遞給可以在方法中的byte []位置傳遞的方法嗎?

類SuperImpl樣子:

public class SuperImpl<T> implements Super<T>{ 
    public SuperImpl(T data) { 
    } 
} 

回答

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

+0

然後你必須綁定類型參數。檢查我的更新 – 2015-04-06 08:55:20

+0

明白了。我更新了答案。 – 2015-04-06 09:13:54