问个问题:为什么String类没有 clone方法?

在java里,String的定义是public final class String extends Object implements Serializable, Comparable, CharSequence 正常情况,String必然有clone方法,因为Object类里有clone方法,在Object里,clone方法的定义是:protected native Object clone().但是下面的代码肯定出错:
String s=new String("");
Object o=s.clone()
提示:clone方法不可见!
请问,这是为什么?

水能帮我解决一下?

Java在多个String引用中分享的是一个单个的字符串,String具有不变性immutable. 所以,无法克隆

多谢多谢。多谢banq帮忙

在另外一个地方,网友的回答我觉得更接近我问的问题。引用在这里,可能这是基本的概念,是我没掌握。让banq兄费心了,谢谢。

yanhuahuo---
protected比package权限多一点的地方就在于可以被子类引用。但它同package一样不能被非该包中的其他类引用。
String所在的包为java.lang.String,而你自己写的类却不在这个包中,所以你不能访问到clone方法。
举个例子:
package com.sina.www;
public class A{
protected void function(){}
}

package com.sina.www;
public class B extends A{}
}

package com.sina.www;
public class AppOne{
public static void main(String[] args){
B b = new B();
b.function();//这是正确的。
}
}

package net.nytimes.www;
public class AppTwo{
public static void main(String[] args){
B b = new B();
b.function();//错误。因为不在同一包中。这和你所说的情况是一样的
}
}

>String所在的包为java.lang.String,而你自己写的类却不在这个包中,所以你不能访问到clone方法
这个原因不是根本原因,根本原因是不可变,我贴老外的文章给你看看:

http://www.javaworld.com/javaworld/jw-09-2001/jw-0907-java101guide.html

文章最后:
Why doesn't the String class allow you to clone String objects? (Hint: Think of immutability.)

所以,对于不懂的问题不是凭感觉哪个能理解就被糊弄,要有科学认真精神

另外,我看了一下你问题:有两个意思:
1. 你不应该用String的clone;
2. 你用了,发现不能用

可能你的意思是后者,但是前者更重要,就不应该起这个想法。

我会好好读一下,多谢banq兄。真是能学不少东西。现在想来,我掌握的还只是很初级的知识!向banq学习!