一 生成Class对象的三种方式

  1 Class.forName("全路径名")

  2  类名.Class

  3 实例对象.getClass()

接着看三种方式生成Class对象的区别

package com.shangcg.reflect;

/**
*
* <p>
* 三种方式生成Class对象的区别测试
* 说明:测试一、二、三可屏蔽代码分开进行看输出结果
* </p>
*/
public class ClassDemo { public static void main(String[] args) { try { /*
* 测试一 测试类名.class
* 输出为:
* testTypeClass---class com.shangcg.reflect.AnyOneObject 没有执行构造函数没有执行静态块
*/ Class<?> testTypeClass = AnyOneObject.class; System.out.println("testTypeClass---" + testTypeClass); /*测试二 测试Class.forName()
* 输出为:
---静态的参数初始化--- 说明执行静态块
testForName---class com.shangcg.reflect.AnyOneObject
*/ Class<?> anyOneTypeForName = Class.forName("com.shangcg.reflect.AnyOneObject"); System.out.println("testForName---" + anyOneTypeForName); /* 测试三 测试Object.getClass()
* 输出:
* ---静态的参数初始化--- 执行静态块
----非静态的参数初始化--- 执行非静态块初始化
----构造函数--- 执行构造函数
testGetClass---class com.shangcg.reflect.AnyOneObject
*/
AnyOneObject testGetClass = new AnyOneObject(); System.out.println("testGetClass---" + testGetClass.getClass()); } catch (Exception e) { e.printStackTrace(); } } } class AnyOneObject { //构造函数 public AnyOneObject() { System.out.println("----构造函数---"); } //静态的参数初始化 static { System.out.println("---静态的参数初始化---"); } //非静态的参数初始化 { System.out.println("----非静态的参数初始化---"); }
}

结论:

1 类名.class(也称类字面常量)  方式生成Class对象不会初始化的静态块,不会初始化参数,不会调用构造函数
2 Class.forName()方式生成Class对象会初始化类静态块,但不会初始化非静态的代码块,也不调用构造函数
3 Object.getClass()方式生成Class对象会先初始化静态块,接着执行非静态块的初始化,最后调用构造函数

二 java反射(介绍Class类中方法之前,先介绍一下反射)

  1 Java反射机制主要功能:

    1.在运行时判断任意一个对象所属的类。

    2.在运行时构造任意一个类的对象。

    3.在运行时判断任意一个类所具有的成员变量和方法。

    4.在运行时调用任意一个对象的方法。

2 对反射提供支持的类(反射功能主要由Class对象和java.lang.relflect包中的类提供支持)

    Class类:代表一个类,位于java.lang包下。

     Field类:代表类的成员变量(成员变量也称为类的属性)。

     Method类:代表类的方法。

     Constructor类:代表类的构造方法。

     Array类:提供了动态创建数组,以及访问数组的元素的静态方法。

三 Class常用方法解释

Class就是普通的一个类,和我们平时写的类没有什么区别,它位于java.lang包下,和java.lang.reflect包下的类共同支持了java的整个反射功能

常用方法列表

  1getName():返回String形式的该类的名称。
  2 newInstance():根据某个Class对象产生其对应类的实例,它调用的是此类的默认构造方法(没有默认无参构造器会报错)
  3 getClassLoader():返回该Class对象对应的类的类加载器。
  4 getSuperClass():返回某子类所对应的直接父类所对应的Class对象
  5 isArray():判定此Class对象所对应的是否是一个数组对象
  6 getComponentType() :如果当前类表示一个数组,则返回表示该数组组件的 Class 对象,否则返回 null。
  7 getConstructor(Class[]) :返回当前 Class 对象表示的类的指定的公有构造子对象。
  8 getConstructors() :返回当前 Class 对象表示的类的所有公有构造子对象数组。
  9 getDeclaredConstructor(Class[]) :返回当前 Class 对象表示的类的指定已说明的一个构造子对象。
  10 getDeclaredConstructors() :返回当前 Class 对象表示的类的所有已说明的构造子对象数组。
  11 getDeclaredField(String) :返回当前 Class 对象表示的类或接口的指定已说明的一个域对象。
  12 getDeclaredFields() :返回当前 Class 对象表示的类或接口的所有已说明的域对象数组。
  13 getDeclaredMethod(String, Class[]) :返回当前 Class 对象表示的类或接口的指定已说明的一个方法对象。
  14 getDeclaredMethods() :返回 Class 对象表示的类或接口的所有已说明的方法数组。
  15 getField(String) :返回当前 Class 对象表示的类或接口的指定的公有成员域对象。
  16 getFields() :返回当前 Class 对象表示的类或接口的所有可访问的公有域对象数组。
  17 getInterfaces() :返回当前对象表示的类或接口实现的接口。
  18 getMethod(String, Class[]) :返回当前 Class 对象表示的类或接口的指定的公有成员方法对象。
  19 getMethods() :返回当前 Class 对象表示的类或接口的所有公有成员方法对象数组,包括已声明的和从父类继承的方法。
  20 isInstance(Object) :此方法是 Java 语言 instanceof 操作的动态等价方法。
  21 isInterface() :判定指定的 Class 对象是否表示一个接口类型
  22 isPrimitive() :判定指定的 Class 对象是否表示一个 Java 的基类型。
  23 newInstance() :创建类的新实例

参考文章http://www.cnblogs.com/mengdd/archive/2013/01/26/2877972.html

    http://blog.csdn.net/ghuilee/article/details/45821537

Java Class类常用方法描述的更多相关文章

  1. JAVA String类常用方法

    一.String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创建 ...

  2. java File类常用方法

    file类常用方法 delete()删除此抽象路径名表示的文件和目录. equals()测试此抽象路径名与给定对象是否相等. exists()测试此抽象路径名表示的文件或目录是否存在. getName ...

  3. 下面有关 JAVA 异常类的描述,说法正确的有()

    都是Throwable的子类: 1.Exception(异常) :是程序本身可以处理的异常. 2.Error(错误): 是程序无法处理的错误.这些错误表示故障发生于虚拟机自身.或者发生在虚拟机试图执行 ...

  4. Java Map类常用方法

    关于Map集合中常用的方法: void clear(); 清空Map boolean containsKey(Object key); 判断Map中是否包含这样的key boolean contain ...

  5. AJPFX关于Java Object类常用方法小总结

    java.lang.Object   java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. Object类 ...

  6. Java File类常用方法及实例

    创建:createNewFile()在指定位置创建一个空文件,成功就返回true,如果已存在就不创建,然后返回false. createTempFile(String prefix, String s ...

  7. Java Object 类常用方法总结

    总结 public final native Class<?> getClass() //返回此 Object 运行时的类 public native int hashCode() //返 ...

  8. java Math类常用方法

    package com.niuke.test; public class MathDemo { public static void main(String args[]){ /** * abs求绝对 ...

  9. 【Demo 0004】Java基础-类封装性

    本章学习要点:       1.  Java封装特性;       2.  掌握类的定义:       3.  掌握类的调用方法; 一.封装特性        Java 纯面向对象语言,面向对象语言遵 ...

随机推荐

  1. 小白学 Python(16):基础数据类型(函数)(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  2. PhpStudy2018后门漏洞预警及漏洞复现&检测和执行POC脚本

    PhpStudy2018后门漏洞预警及漏洞复现&检测和执行POC脚本 phpstudy介绍 Phpstudy是国内的一款免费的PHP调试环境的程序集成包,其通过集成Apache.PHP.MyS ...

  3. 学习笔记37_MVC模板页

    ASPX母版页: 1.添加一个母版页,位置../Views/Shared,有 <asp:ContentPlaceHolder ID = "ContentPlaceHolder1&quo ...

  4. 学习笔记14Js使用技巧

    **页面加载完毕时执行一段代码$(fuction(){ initialMethod(); }); *将一个<form>序列化为json对象并传给服务器var postData = $(&q ...

  5. numpy.array 合并和分割

    # 导包 import numpy as np numpy.array 的合并 .concatenate() 一维数组 x = np.array([1, 2, 3]) # array([1, 2, 3 ...

  6. Pandas常用数据结构

    Pandas 概述 Pandas(Python Data Analysis Library)是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数 ...

  7. 网络安全-主动信息收集篇第二章-三层网络发现之nmap和fping和Hping

    nmap IP  -sn nmap当目标IP在同一网段时,nmap会发送ARP包,当目标IP不在同一网段时nmap会发送ICMP的包. fping IP fping  -g 参数支持对IP地址起始和结 ...

  8. 前端与算法 leetcode 283. 移动零

    目录 # 前端与算法 leetcode 283. 移动零 题目描述 概要 提示 解析 解法一:暴力法 解法二:双指针法 算法 传入[0,1,0,3,12]的运行结果 执行结果 GitHub仓库 # 前 ...

  9. UWP 带左右滚动按钮的横向ListView———仿NetFlix首页河的设计

    也是之前写的控件了,模仿NetFlix的河的设计. 大体要求如下: 1. 横向的ListView 2. 左右按钮,可以左右移动河卡片,左右的滚动条不可见 3. 左右按钮仅在鼠标Hover事件中可见 大 ...

  10. Unix/Linux 从哪儿来?那些改变世界的人们...

    昨天看文章时发现自己对 linux 操作系统不够了解,还记得 17 年时听过老师的一些课,对 linux 的历史有一点了解,不过当时并没有记录笔记,现在已经忘的差不多了. 这次从网上找资料,又重新看了 ...