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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Super_Class 于 2013-6-17 21:19 编辑

毕老师课程上讲 一个数组,可以通过反射得到每个数组元素的类型,但是无法得到数组的类型。之前用Object数组,添加第一个元素是字符串类型的,用反射得到父类的类型是Object,是正确的,所以自己就想解决一下,就写了下面的,测试结果也在下面。谁能解释一下不能?尤其是[Ljava.lang.String;和[Ljava.lang.Object;算不算违背了这个?
  1. class Demo
  2. {
  3.     public static void main(String[] args)
  4.     {
  5.             Object[] objects=new Object[]{"abc",231,3.0};
  6.             for (int i = 0; i < objects.length; i++) {
  7.                         System.out.println(objects[i].getClass().getName());
  8.                         System.out.println(objects[i].getClass().getSuperclass().getName());
  9.                 }
  10.             System.out.println(objects.getClass().getName());
  11.             
  12.             System.out.println("---------------------------分割线---------------------------------");
  13.             
  14.             String[] strings=new String[]{"abc","bcd","def"};
  15.             for (String string : strings) {
  16.                         System.out.println(string.getClass().getName());
  17.                         System.out.println(string.getClass().getSuperclass().getName());
  18.                 }
  19.             System.out.println(strings.getClass().getName());
  20.     }
  21. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
Super_Class + 1

查看全部评分

2 个回复

正序浏览
你这个只是打印了数组里面元素的类型了元素的父类的类型,
.getClass()就是获得这个对象的字符码然后通过这个字符码来获得对象的属性或方法的,
[Ljava.lang.String的意思就是一个字符串的数组前面[就代表你这个的类型是一个数组然后是字符串类型的,我的理解是这样,有不对的楼主别见怪~我也是新手一个
回复 使用道具 举报
结果是:

java.lang.String
java.lang.Object
java.lang.Integer
java.lang.Number
java.lang.Double
java.lang.Number
[Ljava.lang.Object;
---------------------------分割线---------------------------------
java.lang.String
java.lang.Object
java.lang.String
java.lang.Object
java.lang.String
java.lang.Object
[Ljava.lang.String;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马