java.lang.Class类

声明:

public final class Class<T>extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement

T - 由此 Class 对象建模的类的类型。例如, String.class 的类型是 Class<String>。如果将被建模的类未知,则使用 Class<?>

Class 类的实例表示正在运行的 Java 应用程序中的类和接口

枚举是一种类,注释是一种接口。

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

基本的 Java 类型(boolean、byte、char、short、int、long、float 和double)和关键字 void 也表示为 Class 对象。

Class类没有public构造方法。Class对象是在加载类时由Java 虚拟机以及通过调用类加载器中的defineClass 方法自动构造的。

在Java中,每个class都有一个相应的Class对象。也就是说,当我们编写一个类,编译完成后,在生成的.class文件中,就会产生一个 Class对象,用于表示这个类的类型信息。Class类不是我们认为创建的,是由java虚拟机,在我们生成.class文件的时候创建的,我们可以通 过几种方法,获得这个Class类实例。

Class 对象的三种获取方法

package com.tonyluis;

public class Test2 {
    public static void main(String args[]) throws ClassNotFoundException {
        Class<Test2> t1 = Test2.class;
        Class<?> t2 = Class.forName("com.tonyluis.Test2");
        Class<? extends Test2> t3 = new Test2().getClass();
        System.out.println((t1 == t2) + " " + (t2 == t3));
        //输出true true
    }
}

重要的几个方法:

1, public static Class<?> forName(String className)

返回一个Class<?>对象,注意通过这个方法是不能确定Class<?>里面通配符?的类型的。

2,public T newInstance() :根据对象的class新建一个对象,常用于反射中构建对象,调用对象方法,注意该类需实现默认无参构造方法。

Class<?> doubleClass= Class.forName("java.lang.Double");
try {
Double objDouble = (Double) doubleClass.newInstance();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

3,public ClassLoader getClassLoader():

4,public String getName():

5,public native Class getSuperclass():获取类的父类,Object的父类为null
6,public java.net.URL getResource(String name)

解决 File File =new File("C:\\test.txt")绝对路径问题,可以获得相对路径。

参考:http://blog.csdn.net/lcj8/article/details/3502849

7,其他类

public boolean isEnum()
public native boolean isArray()
public native boolean isPrimitive()
public boolean isAnnotation()

public Package getPackage() :反射中获得package,如java.lang.Object 的package为java.lang。

public native int getModifiers() : 反射中获得修饰符,如public static void等 。

public Field getField(String name):反射中获得域成员。

public Field[] getFields() :获得域数组成员。    
public Method[] getMethods() :获得方法。

public Method getDeclaredMethod(String name, Class<?>... parameterTypes):加个Declared代表本类,继承,父类均不包括。

public Constructor<?>[] getConstructors() :获得所有的构造函数。

其中Package、Field、Method方法均为java.lang.reflect包里的对象

Java Class类及反射机制的更多相关文章

  1. java工厂类与反射机制

    java 简单工厂类 2012-04-22 15:44:07|  分类: java |  标签:java工厂类  简单工厂类  |举报|字号 订阅     简单工厂模式需要由以下角色组成: 接口    ...

  2. 在JAVA中,关于反射机制的讨论

    一.什么是反射机制         简单的来说,反射机制指的是程序在运行时能够获取自身的信息.在java中,只要给定类的名字,     那么就可以通过反射机制来获得类的所有信息. 二.哪里用到反射机制 ...

  3. Java 核心类库之反射机制

    1:什么是反射机制? 2:反射机制它可以做什么呢? 3:反射机制对应的API又是什么? 1):通过反射机制来获取一个对象的全限定名称(完整包名),和类名: 2):实例化Class对象 3):获取对象的 ...

  4. java.lang.Class<T> -- 反射机制

    1反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为jav ...

  5. Java进阶之reflection(反射机制)——反射概念与基础

    反射机制是Java动态性之一,而说到动态性首先得了解动态语言.那么何为动态语言? 一.动态语言 动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化.比如常见 ...

  6. Java SE之初探反射机制

    [Keywords]:Java,Hibernate,虚拟机,框架,SQL [Abstract]:   反射的概念:所谓的反射就是java语言在运行时拥有一项自观的能力,反射使您的程序代码能够得到装载到 ...

  7. JAVA(五)反射机制/Annotation

    成鹏致远 | lcw.cnblog.com |2014-02-04 反射机制 1.认识Class类 在正常情况下,必须知道一个类的完整路径之后才可以实例化对象,但是在 java中也允许通过一个对象来找 ...

  8. java的泛型与反射机制

    什么是泛型? 泛型,即“参数化类型”.顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参) ...

  9. java.lang.Class<T> -- 反射机制及动态代理

    Interface : Person package java_.lang_.component.bean; public interface Person { String area = " ...

随机推荐

  1. <转>打工与乘公交

    打工与乘公交 去一个公司打工就如同上了一辆公交车.在上车之前,你应该清楚自己打算去哪里,打算在哪里下车. 有的公交车很豪华,有的很破烂,但是这并不是重点,所有能开到目的地的车都是好车. 上了车之后,也 ...

  2. MVC5 + EF6 + Bootstrap3 (16) 客户端验证

    Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-client-side-validation.html 系列 ...

  3. JS组件系列——Bootstrap寒冬暖身篇:弹出框和提示框效果以及代码展示

    前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...

  4. C#错过的10年

    不知不觉,c#已经诞生n年了,人生有几个十年?c#就浪费了整整一个十年. 这十年里面,电脑发展缓慢,而服务端和手机发展迅速,这是一个移动和后端化的十年,而这个方向,正正是c#没有关注到的,c#把注意力 ...

  5. SharePoint远程发布Solution

    1.在本地修改好代码,选择publish,将.wsp文件保存到本地: 2.将wsp文件上传到目标网站,停止原解决方案并删除,上传新解决方法并且激活: 停止原来的解决方案 上传解决方案 3.激活Solu ...

  6. mtr命令详解

    原文地址:http://blog.hexu.org/archives/1050.shtml 一般在windows 来判断网络连通性用ping 和tracert,ping的话可以来判断丢包率,trace ...

  7. SpringMVC @RequestBody接收Json对象字符串

    其实 @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象.然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象 ...

  8. 修改Firefox的User-Agent,伪装修改秘籍

    火狐浏览器修改userAgent的办法一: 在火狐浏览器地址栏输入"about:config",按下回车进入设置菜单. 找到"general.useragent.over ...

  9. JS复习--更新结束

    js复习-01---03 一 JS简介 1,文档对象模型 2,浏览器对象模型 二 在HTML中使用JS 1,在html中使用<script></script>标签 2,引入外部 ...

  10. sql中的inner join ,left join ,right join

    左连接LEFT JOIN, 也就是说,左外连接的含义是限制连接关键字右端的表中的数据必须满足连接条件,而不关左端的表中的数据是否满足连接条件,均输出左端表中的内容.不满足连接条件的 ,连接字段栏位将对 ...