import java.util.*;
import java.lang.*;
public class Test{
public static void main(String[] argv){
String s1="abc";
String s2=(String) s1.clone();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么这个简单的测试程序不起作用?
San*_*rma 20
clone是Object类的方法.对于一个"可克隆"的类,它应该实现标记Cloneable接口.Stringclass没有实现此接口,也没有覆盖克隆方法,因此错误.
我希望上面的代码段用于教育目的,因为你不应该觉得需要clone在Java中调用字符串,因为:
new String(String),它像一个复制构造函数,几乎等同于你的clone()调用.Object.clone()受到保护.这是一个棘手的API使用.
clone()当通过扩展方法的可见性来扩展Object时,通常会暴露一个.
在任何字符串克隆就没有什么意义,因为它既是final和一成不变的.
复制字符串是有原因的; 这可以通过以下方式完成:
String s1 = ...;
String s2 = new String(s1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23659 次 |
| 最近记录: |