我得到了一個接口,就這樣如何在Java中實現這種通用方法?
public interface Reader<T> {
T read(Class<T> type,InputStream in);
}
它打算從流中讀取類型T的對象的通用接口。然後我知道我要處理的所有對象都是子類,比如說S。所以我創建這個
public class SReader implements Reader<S>{
S read(Class<S> type, InputStream in){
// do the job here
}
}
但Class<S1>
不能分配給Class<S>
即使S1是小號的子類。我如何優雅地實現這一點?有界的類型參數?我不明白。我只是刪除類型參數一樣
public class SReader implements Reader{
// the other stuff
}
這是什麼界面和方法的目的是什麼?我不明白你爲什麼要在Reader上指定一個類型參數,同時將一個Class對象傳遞給該方法。 – newacct
在我使用的庫中有一個類似的接口。它用於從提供的輸入流中反序列化特定的類。也許這只是一個故意的舉動,像@Louis Wasserman下面所說的。 – George
好吧,我在想,如果一個'Reader'的實例只能接受一個特定的類,那麼'type'參數總是相同的,爲什麼要在'read()'方法中使用Class對象呢?它可以在構造函數中傳遞,或者'Reader'的特定子類已經專門用於這種類型。 – newacct