我得到一個編譯錯誤呈三角: 在某種類型的方法visitParents(Class<C>)
不適用於參數(Class<MyClass>)
Java泛型傳入的參數錯誤
MyClass的是一樣的東西:public class SortableTable<T>{...}
我寧願不改SortableTable的類型參數爲<C>
,因爲許多其他類將受到負面影響,也不能更改visitParents以除Class<C>
之外的任何參數作爲參數。
任何潛在的解決方案將不勝感激。
感謝您的建議。 我會盡量具體,因爲我可以沒有填寫代碼的頁面。上線
錯誤描述 「visitParents(SortableTable.class,訪客);」:
方法visitParents(類 「< 」C「>」,IVisitor 「< 」C,R「>」)在型組件是不適用的參數(類 「< 」SortableTable「>」,IVisitor 「< 」組件,空隙「>」)
public class SelectAllFilterPanel extends Panel{private static final Logger log = Logger.getLogger(CorporateActionsPanel.class);
private static final long serialVersionUID = 1L;
public SelectAllFilterPanel(String id, final IModel<Boolean> model){
super(id);
add(new AjaxCheckBox("selectAll", model){
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
// TODO - do this properly
final AjaxRequestTarget requestTarget = target;
IVisitor<Component, Void> visitor = new IVisitor<Component, Void>(){
@Override
public void component(Component component, IVisit visit) {
SortableTable<?> table = (SortableTable<?>)component;
table.visitChildren(CheckBox.class, new IVisitor<Component, Void>(){
@Override
public void component(Component component, IVisit visit) {
if (!component.getId().equals("selectAll")){
CheckBox checkbox = (CheckBox)component;
if (model.getObject())
checkbox.setModelObject(true);
else
checkbox.setModelObject(false);
requestTarget.add(checkbox);
}
}
});
visit.stop();
}
};
visitParents(SortableTable.class, visitor);
target.add(this);
}
});
}}
SortableTable類別:
public class SortableTable<T> extends DataTable<T, String> { private HeadersToolbar headerToolbar;
@SuppressWarnings("unchecked")
public SortableTable(String tableId, SortableTableDataProvider<T> dataProvider, int maxRows) {
this(tableId, dataProvider.getColumns(), dataProvider, maxRows);
}
@SuppressWarnings("unchecked")
public SortableTable(String tableId, List<IColumnConfig<T, String>> columns, ISortableDataProvider<T, String> dataProvider, int maxRows) {
super(tableId, new java.util.LinkedList<IColumn<T, String>>(columns), dataProvider, maxRows);
addTopToolbar(new NavigationToolbar(this));
addTopToolbar(headerToolbar = new HeadersToolbar(this, dataProvider));
addBottomToolbar(new NoRecordsToolbar(this));
setItemReuseStrategy(ReuseIfModelsEqualStrategy.getInstance());
}
public void setHeaderVisible(boolean visible) {
headerToolbar.setVisibilityAllowed(visible);
}
public boolean isHeaderVisible() {
return headerToolbar.isVisibilityAllowed();
}
@Override
protected Item<T> newRowItem(String id, int index, IModel<T> model)
{
return new OddEvenItem<T>(id, index, model);
}}
visitParent簽名是:
public final <R, C extends MarkupContainer> R visitParents(final Class<C> parentClass,
final IVisitor<C, R> visitor)
{
return visitParents(parentClass, visitor, new AllVisitFilter());
}
你需要更具體。發佈實際的錯誤不是「類似」。告訴我們關於這個階段的問題,你是否正在調用'T'的子類,'T'的超類? – 2013-03-14 16:49:47
告訴我們你是如何調用代碼的。 – pcalcao 2013-03-14 16:49:47
*我不希望更改MyClass的類型參數,因爲許多其他類會受到負面影響*我們不確定,因爲您沒有發現真正的問題。 – 2013-03-14 16:56:08