RT。
我自己写这个String类在自己的test包下,按理说不和java.lang.String冲突吧?
可为什么运行就异常呢?

解决方案 »

  1.   

    贴下你的代码
      String 是java的一个final类,是java的一个关键字
      
      

  2.   

    String{
    String.valueOf();--->nosuchmethod exception?which one to call?
    }
      

  3.   

    用到你自己定义的String时都加test.String就可以了吧?
      

  4.   

    String 是java的终态类,并且它在java.lang包中,是java编译器默认导入的.用户不可以继承String.也不能把自定义的类取名为String,如果你非要自定义一个类取名String,Java编译时不会报错,但运行时JVM把String当成系统预导入的java.lang.String而不是你的String,所以你自定义String类的方法系统找不到,并提示java.lang.NoSuchMethodError: ...吧.
      

  5.   

    贴下你的代码
    java lang 里面的String有静态方法可能会和你的方法冲突
      

  6.   

    改个名字叫MyString可能是解决问题的最简便方法
      

  7.   

    在用到时,添加上报名,否则默认为java.long.String类!
      

  8.   

    package test;public class String {
    public static void main(String[] args) {
    System.out.println("helloworld");
    }
    }---------------------------------------------------
    源码如上的确是nosuchmethod exception
    你说的这种情况,我觉得就调java.lang.String.valueOf()呗
    需要调用我自己的String时候,我加上test.String来声明。
    我是这么想的,可是加载的时候就异常了。
      

  9.   


    是可以,可是我发这个贴是想知道为什么定义成String不行
      

  10.   


    class String{
        private char[] buffer;    public String() {
        }    public String(char[] buffer) {
            this.buffer = buffer;
        }
        
        public java.lang.String toString(){
            return new java.lang.String(buffer);
        }
    }
    public class Test {    public static void main(java.lang.String[] args) {
            java.lang.String javaString = "Hello World";
            char[] buffer = javaString.toCharArray();
            String myString = new String(buffer);
            System.out.println(myString);
        }
    }不会有任何问题。
    记住,原来使用标准库String的地方都替换成java.lang.String就可以了。当然把自己的类名和java.lang包里的类名弄成相同的基本上是无聊的行为。
      

  11.   

    感谢楼上。
    我的问题就是main函数参数的String没改成java.lang.String
      

  12.   

    因为 java.lang 包中的类是引导类加载器加载的,是在 JVM 启动时就加载了,所以优先级别最高。