這是我的階級結構的Java如何轉換爲通用型
public abstract class SuperClass
public class A extends SuperClass
public class B extends SuperClass
現在我這是會顯示A元素或B元素的列表清單,以一幀不重複代碼我想盡可能使其最通用。 我的想法是保存類框架的要素在一個領域:
public class MyFrame extends Frame {
private final Class type; // type of the elements i'm going to display
private final DefaultListModel list; // elements to show in a SelectionList
public <T extends SuperClass> MyFrame(final List<T> elementsToDisplay, Class<T> type) {
this.list = createListModel(elementsToDisplay);
this.type = type;
}
現在,可以調用水木清華像
List<A> list = new LinkedList<>(...);
MyFrame frame = new MyFrame(list, A.class);
我的問題是如何使用領域類型,例如,當我在框架中選擇一個項目時,我想將它轉換爲類型,但我不知道如何。以下行是僞代碼
<T extend SuperClass> foo(T item) { ... }
// ----
Object selectedItem = list.get(selectionList.getSelectedIndex());
[type.class] castedItem = type.cast(selectedItem);
foo(castedItem);
如何從對象強制轉換爲類持有型?
您正在尋找'instanceof'運算符,或者我不知道您在說什麼...... – Dariusz 2014-09-19 11:06:02
爲什麼要將它轉換爲該類型? – 2014-09-19 11:06:59
我認爲你將不得不進一步挖掘Java泛型...將MyFrame更改爲MyFrame將是一個好的開始。 –
headcr4sh
2014-09-19 11:07:34