A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 好大一只 中级黑马   /  2016-2-3 14:48  /  678 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Demo {
        public static void main(String[] args)
        {
                R r1=new R(20);
                R r2=new R(20);
                D d=new D();
                System.out.println(r1.equals(r2));
                System.out.println(r2.equals(d));
        }
}
class R
{
        private int age;
        R(int age)
        {
                this.age=age;
        }
        public boolean equals(Object obj)
        {
                if(!(obj instanceof R))
                        throw new ClassCastException("类型错误");
                R r=(R)obj;
                return this.age==r.age;
        }
}
class D
{
       
}

显示
Exception in thread "main" true
java.lang.ClassCastException: 类型错误
        at R.equals(aaaa.java:21)
        at Demo.main(aaaa.java:8)

Exception in thread "main"是个什么意思{:3_66:}

评分

参与人数 1技术分 +1 收起 理由
洋葱头头 + 1

查看全部评分

6 个回复

倒序浏览
主线程发生异常
回复 使用道具 举报

什么原因导致的呢
回复 使用道具 举报
我勒个去,不是你自己写的抛出异常吗?在主线程 System.out.println(r2.equals(d));的时候,跳转到第20行判断if里面为true,执行第21行throw new ClassCastException("类型错误");后面就不再执行了.
回复 使用道具 举报
Exception in thread "main":字面意思呢是  主线程发生异常。
原因是这样的:
你的异常是自己定义的,在执行R类对象的equals方法中爆出,
但是呢,你这个方法的执行是在主线程中执行的,所以就是是在主线程中抛出异常

点评

感谢,我还以为是我主函数哪里写错了,原来是正常反应。  发表于 2016-2-9 12:28
回复 使用道具 举报
哈哈   加油 了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马