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

© hdhunter 中级黑马   /  2015-11-25 14:28  /  3249 人查看  /  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 个回复

正序浏览
张孝祥老师讲过,Class类不能自己创建对象的!!
回复 使用道具 举报
        A、B、D
回复 使用道具 举报
静态只能访问静态的
回复 使用道具 举报
lowke 中级黑马 2015-11-26 21:36:04
8#
  答案是  A B D    详细请参考Object类的getClass的用法
回复 使用道具 举报
我刚学到上帝类感觉到很累
回复 使用道具 举报
a可以 b可以c可以
回复 使用道具 举报
我觉得回答这问题都大神啊,概念老是记不住怎么办
回复 使用道具 举报
1、调用某个类的class属性获取Class对象,如Date.class会返回Date类对应的Class对象(其实就是得到一个类的一份字节码文件); 2、使用Class类的forName(String className)静态方法,className表示全限定名;如String的全限定名:java.lang.String; 3、调用某个对象的getClass()方法。该方法属于Object类;A,B,D
回复 使用道具 举报
*获得一个类实例的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
回复 使用道具 举报
obj.getClass  Class.forName ,还有就是C了
回复 使用道具 举报
本帖最后由 张振国 于 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; 或者该类没有无参构造方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马