我写了一个方法 batchDeleteProject(java.util.List condition)
我在另一个类去调用它:
List condition = new ArrayList(1);
objProjectMan.batchDeleteProject(condition);却报种异常:
java.lang.NoSuchMethodError: com.comtop.projectms.delegate.ProjectMan.batchDeleteProject(Ljava/util/List;)
是怎么回事?
Ljava.util.List跟java.util.List有什么区别?
我在另一个类去调用它:
List condition = new ArrayList(1);
objProjectMan.batchDeleteProject(condition);却报种异常:
java.lang.NoSuchMethodError: com.comtop.projectms.delegate.ProjectMan.batchDeleteProject(Ljava/util/List;)
是怎么回事?
Ljava.util.List跟java.util.List有什么区别?
L表示这个东西是一个对象型数据,这个东西是类签名,java底层对类的访问都是使用java/lang/String这种方式,而不是java.lang.String这种方式,L则是表示,这是一个对象类型的数据,例如I 表示int类型的数据,记住基础类型数据都有自己的表现形式。
数组的表现形式是在之前加上一个[ 例如数组List [] list;那么他的形式就是“[Ljava/util/List;”,几维数组前面就是几个[ 在例如 int [][] i;的表现形式就是 [[I
如果楼主查看到源代码中有这个方法,你就要重新编译一下这个java文件,如果这个方法不是你写的,而是在一个包中,那么你要替换掉这个包到一个适合的版本。
是我胡扯?还是你胡扯呢?自己测试 System.out.println(String[].class);
System.out.println(String.class);
楼主先确认下com.comtop.projectms.delegate.ProjectMan是不是存在该方法先吧。
像你这样学会了一二三怎么写就说四是四条横线那是不行的。
Ljava.util.List 你少了一个分号,这个是字段在 JVM 内部的表示。L 表示对象类型,后面跟着的是规范类名,最后加个分号。而 java.util.List 纯粹的就是一个类名。如果你看到的是 [[Ljava.util.List; 表示的是一个 List 的二维数组,有多个少 [ 就是多少维数组。参考:http://java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#14152