黑马程序员技术交流社区

标题: 为什么getClass()出错? [打印本页]

作者: 取名回忆的时光    时间: 2014-11-16 11:54
标题: 为什么getClass()出错?
  1. <blockquote>class Demo
复制代码
错误提示为:
请问这是为何?我是按照毕老师的一模一样的书写的,可我为何我的包这个错,这个编译错误是什么原因、?


error.jpg (26.65 KB, 下载次数: 31)

error.jpg

作者: 取名回忆的时光    时间: 2014-11-16 11:57
本帖最后由 取名回忆的时光 于 2014-11-16 11:59 编辑

class Demo
{
};
class DemoTest
{
        public static void main(String[] args)
        {
                Demo d = new Demo();
                Class c = new d.getClass();
                System.out.println(d.toString());
                System.out.println(Integer.toHexString(d.hashCode()));
                System.out.println(c.getName());
        }
}
这是原代码

作者: 15621506590    时间: 2014-11-16 14:27
java中不能New的类有三种情况:一:你把接口错当成类,二:你new的是一个抽象类,三:你那个类没有public的构造函数;  你的这样情况就是Demo里面没有public的构造函数
作者: wangshuying    时间: 2014-11-16 14:54
d已经是一个对象了,怎么能再new
作者: 取名回忆的时光    时间: 2014-11-16 20:03
wangshuying 发表于 2014-11-16 14:54
d已经是一个对象了,怎么能再new

谢谢哥,原来是这么回事
作者: 取名回忆的时光    时间: 2014-11-16 20:04
15621506590 发表于 2014-11-16 14:27
java中不能New的类有三种情况:一:你把接口错当成类,二:你new的是一个抽象类,三:你那个类没有public的 ...

哥,我找到原因了,不是因为没有Demo没有构造函数,而是我的Demo已经是一个对象了,在语句中我又new 了一次。所以不对
作者: 颜仔    时间: 2014-11-18 19:18
你这是拿类的字节码文件:有三种方法:
(1)对象.getClass()。你这d已经是一个对象不能再new,应改为:Class c=d.getClass();
(2)类名.class
(3)Class。forName("类名")。一般用第三种。
作者: .ヤ牧马人〃    时间: 2014-11-19 12:07
15621506590 发表于 2014-11-16 14:27
java中不能New的类有三种情况:一:你把接口错当成类,二:你new的是一个抽象类,三:你那个类没有public的 ...

类不写public 可以吧??默认情况下不是就是Public?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2