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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hdhunter 中级黑马   /  2015-11-25 14:28  /  2823 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币

获取Class类型的对象的三种方式是:(  )


A. Object类的getClass()

B. class静态属性

C. 自己创建Class对象

D. Class类的forName()静态方法


最佳答案

查看完整内容

A、B、D例如,String.class 的类型是Class。如果将被建模的类未知,则使用Class。 [java] view plaincopyprint?在CODE上查看代码片派生到我的代码片 public final class Class extends Object implements java.io.Serializable, java.lang.reflect.GenericDeclaration, java.lang.reflect.Type, java.lang.reflect.AnnotatedElement 获取Cl ...

11 个回复

倒序浏览
本帖最后由 张振国 于 2015-11-26 18:23 编辑

A、B、D例如,String.class 的类型是Class<String>。如果将被建模的类未知,则使用Class<?>。

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
public final  
    class Class<T> extends Object  implements java.io.Serializable,   
                  java.lang.reflect.GenericDeclaration,   
                  java.lang.reflect.Type,  
                              java.lang.reflect.AnnotatedElement  

获取Class实例的三种方式:
运用.class的方式来获取Class实例。对于基本数据类型的封装类,还可以采用.TYPE来获取相对应的基本数据类型的Class实例。例如,Integer.TYPE 与 int.class是等效的,都是int。
利用对象调用getClass()方法获取该对象的Class实例;
使用Class类的静态方法forName(),用类的名字获取一个Class实例(static Class forName(String className) ),这种方式灵活性最高,根据类的字符串全名即可获取Class实例,可以动态加载类,框架设计经常用到;

Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的defineClass方法自动构造的,因此不能显式地声明一个Class对象。

虚拟机为每种类型管理一个独一无二的Class对象。也就是说,每个类(型)都有一个Class对象。运行程序时,Java虚拟机(JVM)首先检查是否所要加载的类对应的Class对象是否已经加载。如果没有加载,JVM就会根据类名查找.class文件,并将其Class对象载入。

基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也都对应一个 Class 对象。

每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。

一般某个类的Class对象被载入内存,它就用来创建这个类的所有对象。

主要方法:
newInstance

public T newInstance()
              throws InstantiationException,
                     IllegalAccessException

创建此 Class 对象所表示的类的一个新实例。如同用一个带有一个空参数列表的new 表达式实例化该类。
抛出:
IllegalAccessException - 如果该类或其 无参 构造方法是不可访问的。
InstantiationException - 如果此Class 表示一个抽象类、接口、数组类、基本类型或 void; 或者该类没有无参构造方法。
回复 使用道具 举报
obj.getClass  Class.forName ,还有就是C了
回复 使用道具 举报
*获得一个类实例的Class对象有三种常用方法
*1、调用从Object类中继承来的方法public Class getClass() *以下两种方法是获得某个指定类的Class对象(如果知道类实例的确切类型)
*2、利用Class类的static方法forName(String className(需要带包名)),注意这个方法throws ClassNotFoundException
*3、利用类字面常量,类名.class,也会返回一个指定类的Class对象,它在编译时进行检查,不抛出任何异常。详情可看博客:http://blog.csdn.net/bryantd/article/details/652310
回复 使用道具 举报
1、调用某个类的class属性获取Class对象,如Date.class会返回Date类对应的Class对象(其实就是得到一个类的一份字节码文件); 2、使用Class类的forName(String className)静态方法,className表示全限定名;如String的全限定名:java.lang.String; 3、调用某个对象的getClass()方法。该方法属于Object类;A,B,D
回复 使用道具 举报
我觉得回答这问题都大神啊,概念老是记不住怎么办
回复 使用道具 举报
a可以 b可以c可以
回复 使用道具 举报
我刚学到上帝类感觉到很累
回复 使用道具 举报
lowke 中级黑马 2015-11-26 21:36:04
9#
  答案是  A B D    详细请参考Object类的getClass的用法
回复 使用道具 举报
静态只能访问静态的
回复 使用道具 举报
        A、B、D
回复 使用道具 举报
张孝祥老师讲过,Class类不能自己创建对象的!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马