java 弱智语言_Java弱智错误

1、关于类中的main方法

main方法的作用就是程序执行入口,任何类都可以有main方法,没有main方法无法开始执行。

现在有一段程序是这样的:

//Sheep01.class

public class Sheep01 implements Cloneable{

private Date date;

private String name;

public Sheep01(){

// TODO Auto-generated constructor stub

}

public Sheep01(Date date, String name) {

super();

this.date = date;

this.name = name;

}

@Override

protected Object clone() throws CloneNotSupportedException {

// TODO Auto-generated method stub

return super.clone();

}

public Date getDate() {

return date;

}

public void setDate(Date date) {

this.date = date;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

//Demo01.class

public class Demo01 {

Sheep01 s1 = new Sheep01(new Date(), "hah");

Sheep01 s2 = (Sheep01) s1.clone();

}

这两个类文件中,Demo01.class文件中有编译错误:“Default constructor cannot handle exception type CloneNotSupportedException thrown by implicit super constructor. Must define an explicit constructor“,大概的意思就是说,默认的构造器不能处理CloneNotSupportedException这个异常,需要定义特定的构造器来处理。CloneNotSupportedException这个异常怎么出现的呢,因为clone()方法会抛出异常,在Demo01中的两句代码实际上是在定义两个成员变量,初始化类的时候要做的事情,而且s2在定义的过程中会抛出异常,所以需要特定的Demo01的构造器来处理这个异常。

所以解决方案为:

public class Demo01 {

Sheep01 s1 = new Sheep01(new Date(), "hah");

Sheep01 s2 = (Sheep01) s1.clone();

public Demo01() throws Exception{

// TODO Auto-generated constructor stub

}

}

//或者

public class Demo01 {

Sheep01 s1 = new Sheep01(new Date(), "hah");

Sheep01 s2;

public Demo01(){

try {

s2 = (Sheep01) s1.clone();

} catch (CloneNotSupportedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

但是实际上,我并不是想做这样的事情,我只是想克隆一个s2,然后看克隆出来的s2和s1是否有相同的date和name,所以归根到底我就是忘了在main函数中写Demo01开始的两句代码,如此弱智的错误。

public class Demo01 {

public static void main(String[] args) throws CloneNotSupportedException {

Sheep01 s1 = new Sheep01(new Date(), "hah");

Sheep01 s2 = (Sheep01) s1.clone();

System.out.println(s1.getName()+"====="+s2.getName());

}

}

在main函数中clone函数也会报错,但是Eclipse会提示你throws或者try-catch来解决;但是如果没有在main函数中,编译器只会告诉你”Default constructor cannot handle exception type CloneNotSupportedException thrown by implicit super constructor. Must define an explicit constructor”,让你无从下手。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值