反射机制(1)认识Class类

认识Class类:

正常情况下,必须指定类的完整路径才能实例化对象,但是java中也允许通过一个对象找到其所在类的信息。这实际就是class类的功能。

package 类集;

class X{
};
public class test1{
    public static void main(String args[]){
        X x = new X() ;    // 实例化X类的对象
        System.out.println(x.getClass().getName()) ;    // 得到对象所在的类
    }
}

运行结果:

类集.X

object类有如下优点:

CLASS类

  Class本身表示一个类本身,通过class可以得到一个类中完整结构,包括此类的方法定义,方法属性等。

常用方法:

实例化class类对象的三种方法:

1,通过forName(包。类名称)方法。

2,类。class  

3,对象。getClass()

一,其中forName定义如下:实例化是forName(包.类名称)

public static Class<?> forName(String className)
                        throws ClassNotFoundException

可见,使用forName()需要处理异常。

二,getClass()是object类的方法,对象.getClass()

三,类。class。

四,通过getName(),可以获取类名称。

如下例子:

package 类集;

class X{
};
public class test1{
    public static void main(String args[]){
        Class<?> c1 = null ;        // 指定泛型
        Class<?> c2 = null ;        // 指定泛型
        Class<?> c3 = null ;        // 指定泛型
        try{
            // 以下的操作形式是在开发中最常用的一种形式
            c1 = Class.forName("类集.X") ;  //forName(包.类名称)
        }catch(ClassNotFoundException e){
            e.printStackTrace() ;
        }
        c2 = new X().getClass() ;        // 通过Object类中的方法实例化
        c3 = X.class ;    // 通过类.class实例化
        System.out.println("类名称:" + c1.getName())  ;    // 得到类的名称
        System.out.println("类名称:" + c2.getName())  ;    // 得到类的名称
        System.out.println("类名称:" + c3.getName())  ;    // 得到类的名称
    }
}

一旦实例化Class类后,即可进行反射的进一步操作。

总结

1,了解class类的作用:反射源头,

2,三种class类的实例化方式,要以forName()重点掌握,还有 类.class

时间: 2024-08-26 18:43:05

反射机制(1)认识Class类的相关文章

反射机制2,Class类的使用

class是反射源头,不光可以取得对象所在类信息,也可直接通过class类的方法进行对象的实例化操作. 使用关键字new为对象实例化.如果已经实例化好了class对象,就可以通过class类中提供的newInstance()操作 public T newInstance() throws InstantiationException, IllegalAccessException 来个例子: package 类集; class Person{ private String name ; // n

利用反射机制动态的调用类信息

public class reflectTest { /** * 利用反射设置实体类的属性 * * @return * @throws ClassNotFoundException * @throws IllegalAccessException * @throws InstantiationException * @throws NoSuchFieldException * @throws SecurityException * @throws NoSuchMethodException *

Java之反射机制三:获取类的方法

一.实体类BigDog.java package reflex;public class BigDog extends Dog { private Integer age; public String name; public BigDog(){} private void getDog(){} private BigDog(Integer age, String name) { this.age = age; this.name = name; } public String getName(

java反射机制(一)—— 利用反射机制实例化对象

一.Java有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可以于运行时加载.探知.使用编译期间完全未知的classes.换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体.或对其fields设值.或唤起其methods.(度娘文库是这么说的) 二.这篇文章主要介绍一下通过反射机制去实例化一个类的对象,然后调用其方法.本文主要介绍两种方式,第一种就是通过构造函数来实例化,第二种就是通过Cl

java学习——反射机制

/* * JAVA反射机制是在运行状态中,对于任意一个类 (class文件),都能够知道这个类的所有属性和方法: * 对于任意一个对象,都能够调用它的任意一个方法和属性: * 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. * * 动态获取类中信息,就是java反射 . * 可以理解为对类的解剖. * * 要想要对字节码文件进行解剖,必须要有字节码文件对象. * 如何获取字节码文件对象呢? * */ 1. 通过Class clazz =Class.forName()找

Java反射机制浅析

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. "程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言".从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言.但是JAVA有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可以于运行时加载.探知.使用

Java反射机制及IoC原理

一. 反射机制概念 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义.在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息. 反射是Java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接.但是反射使用不当会成本很高! 类中有什么信息,利用反射机制就能可以获得什么信息,不过前提是得知道类的名字. 二. 反射机制的作用 在运行时判断任意

Java 反射机制及Annotation

转自:http://justjavac.iteye.com/blog/714654 Java 反射是 Java 语言的一个很重要的特征. 它允许运行中的 Java 程序对自身进行检查,并能直接操作程序的内部属性.例如,使用 它能获得 Java 类中各成员的名称并显示出来. Java 反射机制主要提供了以下功能: a .在运行时判断任意一个对象所属的类. b .在运行时构造任意一个类的对象. c .在运行时判断任意一个类所具有的成员变量和方法. d .在运行时调用任意一个对象的方法. 在 JDK 

深入理解Java类型信息(Class对象)与反射机制

深入理解Class对象 RRTI的概念以及Class对象作用 认识Class对象之前,先来了解一个概念,RTTI(Run-Time Type Identification)运行时类型识别,对于这个词一直是 C++ 中的概念,至于Java中出现RRTI的说法则是源于<Thinking in Java>一书,其作用是在运行时识别一个对象的类型和类的信息,这里分两种:传统的"RRTI",它假定我们在编译期已知道了所有类型(在没有反射机制创建和使用类对象时,一般都是编译期已确定其类

Java反射机制&lt;2&gt;

反射机制还可以调用类中的指定方法或指定属性,并且可以通过反射完成对数组的操作. 通过反射调用类中的方法