我有一個關於靜態方法訪問的問題。我有一個類,我有4個靜態方法。如圖代碼:私人靜態方法從公共靜態訪問
package com.itrucking.util;
public class ZKUtil implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
* @author Shekhar
* @param _class
* @param listbox
* To make Listbox sorting enabled
* @throws NoSuchMethodException
* @throws SecurityException
*/
public static void setSortingEnabled(Class<?> _class, Listbox listbox){
Map<Listheader, String> sortingPair = new HashMap<Listheader, String>();
sortingPair = getMapForSorting(_class, listbox);
if (!sortingPair.isEmpty()) {
for (Map.Entry<Listheader, String> entry : sortingPair.entrySet()) {
entry.getKey().setSortAscending(
new FieldComparator(entry.getValue(), true));
entry.getKey().setSortDescending(
new FieldComparator(entry.getValue(), false));
}
}
}
/**
* @author Shekhar
* @param _class
* @param listbox
* @return Map<Listheader, String>
*/
private static Map<Listheader, String> getMapForSorting(Class<?> _class,Listbox listbox) {
List<Listheader> headerList = getListHeaderList(listbox);
Map<Listheader, String> sortingPair = new HashMap<Listheader, String>();
System.out.println(_class);
Field[] fields = _class.getDeclaredFields();
for (Field f : fields) {
// System.out.println(f.getName()+":"+f.getType());
for (Listheader lh : headerList) {
if (f.getName().equals(getId(lh)))
sortingPair.put(lh, f.getName());
}
}
System.out.println(sortingPair);
return sortingPair;
}
private static String getId(Listheader listheader) {
String listheaderId = null;
if (listheader.getId().contains("_")) {
listheaderId = listheader.getId().split("_")[1];
// System.out.println("listheaderId->"+listheaderId);
}
return listheaderId;
}
/**
* @author Shekhar
* @param listbox
* @return List<Listheader>
*/
@SuppressWarnings("unchecked")
private static List<Listheader> getListHeaderList(Listbox listbox) {
List<Listheader> headerList = new ArrayList<Listheader>();
Listhead listhead = null;
List<Component> listboxComponentList = listbox.getChildren();
for (Component listboxComponent : listboxComponentList) {
if (listboxComponent instanceof Listhead) {
listhead = (Listhead) listboxComponent;
break;
}
}
List<Component> listOfComp = listhead.getChildren();
if (listhead != null) {
for (Component c : listOfComp) {
if (c instanceof Listheader)
headerList.add((Listheader) c);
}
}
return headerList;
}
}
,我從代碼中調用setSortingEnabled()從onLoadShipperDetailsListCtrl(方法)波紋管:
package com.itrucking.webui.controller;
public class ShipperDetailsListCtrl{
/**
* @param e
* @return void
*/
public void onCreate$window_shipperDetailsList(Event e){
onLoadShipperDetailsListCtrl();
}
/**
* @return void
*/
public void onLoadShipperDetailsListCtrl(){
System.out.println("onLoadShipperDetailsListCtrl called.");
shipperList = shipperService.getShipperList();
doRenderListboxShipperDetailsList(shipperList);
ZKUtil.setSortingEnabled(ShipperMaster.class, listbox_shipperDetailsList);
}
}
所以我想,如果我從其他類調用setSortingEnabled()方法,所以我保留作爲公共和其他方法,我保持私人,但它給我的錯誤爲: java。 lang.NoSuchMethodError:com/itrucking/util/ZKUtil.getMapForSorting(Ljava/lang/Class; Lorg/zkoss/zul/Listbox;)Ljava/util/Map;
爲什麼有錯誤的NoSuchMethodError爲ZKUtil.getMapForSorting(在setSortingEnabled)()調用
我知道我們可以在同一個類調用私有方法從公衆。所以我無法理解這是什麼問題。
在此先感謝。
您確定在ZKUtil中使用從org/zkoss/zul/Listbox導入的列表框? – Julien
是的朱利安我確定其實我確認你的評論後。 –