一 生成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. 阿里云和微软共同开源的 OAM 对 Kubernetes 开发人员意味着什么?

    上周,微软和阿里巴巴共同推出了开放应用模型(OAM),用于定义部署在任何地方的应用模型的一种规范.Rudr是Microsoft基于Kubernetes环境的OAM标准实现. 我用了一个周末来了解OAM ...

  2. Django的下载与基本命令

    1.下载Django: pip3 install django==2.1.2 2.创建一个django project django-admin startproject 项目名称 3.在项目目录下创 ...

  3. oracle 特殊符号替换删除处理

    1 获取ascii码 select ascii('特殊字符') from dual 2 替换 update table set testfield= replace(testfield,chr(asc ...

  4. 聊聊 Vue 中 provide/inject 的应用

    众所周知,在组件式开发中,最大的痛点就在于组件之间的通信.在 Vue 中,Vue 提供了各种各样的组件通信方式,从基础的 props/$emit 到用于兄弟组件通信的 EventBus,再到用于全局数 ...

  5. SCOI2005 繁忙的都市 [Luogu P2330]

    题目描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条 ...

  6. [2018-03-06] 基于Django的轻量级CMS Mezzanine搭建笔记

    一丶什么是Mezzanine? 它是基于django的内容管理平台(),组成简单,可扩展性和定制性强,特别是个小型的个人博客系统.它也提供了类似wordpress的管理页面.博客发布.图片展示等功能, ...

  7. JS- 封装、继承、多态

    http://www.cnblogs.com/silence516/articles/1509456.html

  8. 【自然语言处理】利用LDA对希拉里邮件进行主题分析

    首先是读取数据集,并将csv中ExtractedBodyText为空的给去除掉 import pandas as pd import re import os dir_path=os.path.dir ...

  9. k8s部署高可用Ingress

    部署高可用Ingress 官网地址https://kubernetes.github.io/ingress-nginx/deploy/ 获取ingress的编排文件 wget https://raw. ...

  10. 网站搭建-IIS Windows系统搭建网站 (不小心看到自己的密码 - 怎么找回网站记住的密码)

    上一期说到IIS可以用自己喜欢的网站来直接玩,然后得得瑟瑟将自己的博客园账号首页拿过去玩(今天第一天水博客园). 然后自己访问啊,访问啊,然后就一直点啊点的,当然,其实后面的链接都是跳转到博客园里面去 ...