我有一个关于静态方法访问的问题.我有一个类我有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;
}
Run Code Online (Sandbox Code Playgroud)
}
我从代码下面的onLoadShipperDetailsListCtrl()调用setSortingEnabled()方法:
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);
}
Run Code Online (Sandbox Code Playgroud)
}
所以我认为,如果我从其他类调用setSortingEnabled()方法,所以我保持是公共和其他方法我保持私有但它给我错误如:java.lang.NoSuchMethodError:com/itrucking/util/ZKUtil.getMapForSorting (Ljava /郎/类; Lorg/zkoss/ZUL /列表框;)Ljava/util的/地图;
为什么在setSortingEnabled()中调用ZKUtil.getMapForSorting()时出现错误NoSuchMethodError
我知道我们可以在同一个类中从public调用private方法.所以我无法理解问题所在.
提前致谢.
A NoSuchMethodError(运行时错误表示无法找到方法,而不是编译器错误)通常意味着.class您使用的文件版本与您编译的文件版本不同.在这种情况下,您可能已对其进行了更改ZKUtil.java,但JVM正在加载过时的版本ZKUtil.class.清理并重建所有.class文件.
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |