关于clone()方法

Freefish1994 2016-08-05 05:23:40
为什么代码里红色部分提示我还要抛异常?
Person类已经重写clone方法也实现Cloneable接口了啊
必须要抛异常才能执行

public class TeatA {

public static void main(String[] args) throws CloneNotSupportedException {
Person p1 = new Person(18,true);
Person p2 = (Person) p1.clone();
System.out.println("p1:" + p1);
System.out.println("p2:" + p2);

}
}

class Person implements Cloneable {
// private String name;
private int age;
private boolean sex;

public Person(int age, boolean sex) {
super();
//this.name = name;
this.age = age;
this.sex = sex;
}

// public String getName() {
// return name;
// }
//
// public void setName(String name) {
// this.name = name;
// }

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public boolean isSex() {
return sex;
}

public void setSex(boolean sex) {
this.sex = sex;
}

@Override
public String toString() {
return "Person [age=" + age + ", sex=" + sex + "]";
}

@Override
public Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
return super.clone();
}
}
...全文
191 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
scmod 2016-08-06
  • 打赏
  • 举报
回复
你可以在重写调用super.clone的时候try catch,重写的方法不抛出异常就行了...
soton_dolphin 2016-08-06
  • 打赏
  • 举报
回复
引用 3 楼 qq_27762917 的回复:
[quote=引用 1 楼 soton_dolphin 的回复:] 因为clone()方法声明了会抛出异常,所以在调用这个方法的时候必须用try..catch 或者在调用的那个方法上声明抛出异常
等于只要在测试类中i调用clone()就需要抛异常是吗?[/quote] 不是需要抛出异常,而是需要处理可能抛出的异常
NewMoons 2016-08-06
  • 打赏
  • 举报
回复
楼主,2楼已经解释的非常清楚了,不要只是拘泥于形式上的语法。 我建议你把java 的异常体系好好了解一下,可能就不需要来这里问这个问题了。
Freefish1994 2016-08-05
  • 打赏
  • 举报
回复
引用 1 楼 soton_dolphin 的回复:
因为clone()方法声明了会抛出异常,所以在调用这个方法的时候必须用try..catch 或者在调用的那个方法上声明抛出异常
等于只要在测试类中i调用clone()就需要抛异常是吗?
小灯光环 2016-08-05
  • 打赏
  • 举报
回复
clone方法的源码: protected native Object clone() throws CloneNotSupportedException;
soton_dolphin 2016-08-05
  • 打赏
  • 举报
回复
因为clone()方法声明了会抛出异常,所以在调用这个方法的时候必须用try..catch 或者在调用的那个方法上声明抛出异常

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧