`

java.lang.ClassCastException:menuInfo cannot be cast to java.lang.Comparable

 
阅读更多

今天在做项目的时候,发现dtree的菜单项总是变动.. 后面改进一下.使用TreeSet集合,进行排序.. TreeSet的好处是检索速度比较快. 是一个有序集合.采用数的存储数据.

 

要想对象与对象之间进行比较..  要在你所在的对象menuInfo implement Comparable接口。

然后实现ComparableTo方法比较方法.

比如要使用菜单名称进行排序..则比较菜单名称即可..

@Override
	public int compareTo(Object o) {
		// TODO Auto-generated method stub
		if (this.getMenuName().compareTo(((MenuInfo) o).getMenuName()) > 0) {
			return 1;
		}
		if (this.getMenuName().compareTo(((MenuInfo) o).getMenuName()) < 0) {
			return -1;
		}
		return (int)(this.getMenuId() - ((MenuInfo)o).getMenuId());
	}

 

 

 需要注意的是:对象与对象之间的比较一定要实现Comparable接口,否则将会报如下异常":

 

 

java.lang.ClassCastException: com.java.demo.vo.menuInfo cannot be cast to java.lang.Comparable
 at java.util.TreeMap.put(TreeMap.java:542)
 at java.util.TreeSet.add(TreeSet.java:238)
 at com.admin.struts.LoginAction.parseMenuNameList(LoginAction.java:669)
 at com.admin.struts.LoginAction.loadingMenuByAdmin(LoginAction.java:432)
 at com.admin.struts.LoginAction.loginSuccessOrDesable(LoginAction.java:295)
 at com.struts.LoginAction.checkUserLogin(LoginAction.java:356)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
 at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
 at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
 at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
 at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics