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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 倪杭乘 中级黑马   /  2012-5-15 10:22  /  3536 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. System.out.println(        int.class.getName());//int
  2. System.out.println(        String.class.getName());//java.lang.String
  3.         System.out.println(        int.class.getDeclaredConstructors());//[Ljava.lang.reflect.Constructor;@5d888759
  4.         System.out.println(        String.class.getDeclaredConstructor());//public java.lang.String()
复制代码
int既然是一个字节码文件.class,为什么没有构造函数,没有newInstance呢

String.class.newInstance()可以
int.class.newInstance()不可以

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

4 个回复

倒序浏览
因为int是基本类型 你如果用Integer  就可以了
回复 使用道具 举报
这个你想下,如果有的话,就是这样的了
int a=new int(1);
认为这个是对的吗,int是基本类型的数据,
只有在装箱成为Integer后才可以Integer a=new Integer(1);

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 高云飞 于 2012-5-15 11:30 编辑

int是基本类型,int没有父类,String不是基本类型,有父类
System.out.println(int.class.getSuperclass());//输出null;
System.out.println (String.class.getSuperclass());//输出class java.lang.Object
newInstance()方法要看该类内部是怎样实现的。
在newInstance()里的API描述里,有这样一句:The class is instantiated as if by a new expression with an empty argument list。
我看出的意思是,newInstance()会默认调用该类里无参的构造方法。
因为int不是一个类,也就没有继承自祖宗类Object,所以根本不会有什么无参的构造方法。
java中每个类都是继承Object类的,都会默认有一个无参构造方法的,只要没有复写。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
基本类型都没有构造方法,所以不能new ;有xxx.class不一定能new,因为有xxx.class并不代表xxx.class中就有构造函数
只有引用类型才能new ; 如:Interger就能,它是int类型的包装类,所谓包装:就是Integer类里面定义了一个int变量,
然后他里面还老一些操作int类型数据的方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马