• 实例化Class类的5种方式
  • 明日学院 发表于 2017/2/21 14:06:00 | 分类标签: 编程 程序员
  •  Java的数据类型可以分为两类,即引用类型和原始类型。对于每种类型的对象,Java虚拟机会实例化不可变的java.lang. Class对象。它提供了在运行时检查对象属性的方法,这些属性包括它的成员和类型信息。更重要的是Class对象是所有反射API的入口。本实例演示如何获得Class对象。实例运行效果如图












    技巧:Class类是泛型类,可以使用@SuppressWarnings (unchecked)忽略泛型或者使用Class<?>类型。

    通常有5种方式可以获得Class对象,详细说明如下。

    Object.getClass():如果一个类的对象可用,则最简单的获得Class的方法是使用Object.getClass()。当然,这种方式只对引用类型有用。

    .class语法:如果类型可用但没有对象,则可以在类型后加上“.class”来获得Class对象。这也是使原始类型获得Class对象的最简单的方式。

    Class.forName():如果知道类的全名,则可以使用静态方法Class.forName()来获得Class对象。它不能用在原始类型上,但是可以用在原始类型数组上。

    注意:Class.forName()会抛出ClassNotFoundException异常。

    包装类的TYPE域:每个原始类型和void都有包装类。利用其TYPE域就可以获得Class对象。

    Class为返回值的方法:请参考反射API

    编写类ClassTest,在该类的main()方法中,演示了各种获得Class对象的方法。代码如下:

    package com.mingrisoft.reflection;

     

    import java.util.Date;

     

    public class ClassTest {

        @SuppressWarnings("unchecked")

        public static void main(String[] args) throws ClassNotFoundException {

            System.out.println("1种方法:Object.getClass()");

            Class c1 = new Date().getClass();// 使用getClass()方式获得Class对象

            System.out.println(c1.getName());// 输出对象名称

            System.out.println("2种方法:.class语法");

            Class c2 = boolean.class;// 使用.class语法获得Class对象

            System.out.println(c2.getName());// 输出对象名称

            System.out.println("3种方法:Class.forName()");

            Class c3 = Class.forName("java.lang.String");// 使用Class.forName()获得Class对象

            System.out.println(c3.getName());// 输出对象名称

            System.out.println("4种方法:包装类的TYPE");

            Class c4 = Double.TYPE;// 使用包装类获得Class对象

            System.out.println(c4.getName());// 输出对象名称

        }

    }


    心法领悟:掌握获得Class对象的方法。

    除了java.lang.reflect.ReflectPermissionjava.lang.reflect包外,所有类都没有公共的构造方法。为了获得这些类的对象,必须使用Class类中适当的方法。对于不同的数据类型,Class对象的获得方式是不同的。

  • 请您注意

    ·自觉遵守:爱国、守法、自律、真实、文明的原则

    ·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规

    ·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品

    ·承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    ·您在编程中国社区新闻评论发表的作品,本网站有权在网站内保留、转载、引用或者删除

    ·参与本评论即表明您已经阅读并接受上述条款

  • 感谢本文作者
  • 作者头像
  • 昵称:明日学院
  • 加入时间:2017/1/10 10:06:00
  • TA的签名
  • 这家伙很懒,虾米都没写
  • +进入TA的空间
  • 以下内容也很赞哦
分享按钮