反射获取Class对象的三种方式

import cn.qujianlei.domain.Person;

public class ReflectDemo {

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

        /*
         *
         * 反射技术:动态的获取类以及类中的成员,并可以调用该类的成员。
         * 以前有什么类就new什么对象。
         * 现在没有类,给什么类就new什么对象。
         *
         *
         * 反射技术的出现提高了程序的扩展性
         * 反射技术中最重要的一点:先获取到那个类。
         * 如何获取类呢?
         *
         * 无论new什么对象,都需要先获取字节码文件
         * 如何获取呢?发现java已对字节码文件进行了描述用Class类完成的
         *
         * 如何获取一个字节码文件的对象呢?
         *
         * 方式一:Object getClass()方法,发现在反射技术里,该方法不合适,反射技术中不明确具体类
         *
         * 方式二:所有的数据类型都由自己对应的class对象,表示方法很简单
         * 每一个数据类型都由一个默认的静态属性。.class用该属性就可以获取到字节码文件对象
         * 虽然不用对象调用,但还是要用具体的类调用静态属性。
         *
         * 方式三:在Class类中找到了forName方法,通过名称就可以获取对应的字节码文件对象
         * 重点!!!!!
         *
         */

//        methodDemo_1();

//        methodDemo_2();

        methodDemo_3();

    }

    public static void methodDemo_3() throws ClassNotFoundException {

        String className = "cn.qujianlei.domain.Person";

        Class clazz = Class.forName(className);

        System.out.println(clazz);

    }

    public static void methodDemo_2() {

        Class clazz = Person.class;
        Class clazz2 = Person.class;
        System.out.println(clazz==clazz2);

    }

    //获取Class对象的方式一
    public static void methodDemo_1(){

        //调用getClass先有对象
        Person p1 = new Person();
        Class c1 = p1.getClass(); 

        Person p2 = new Person();
        Class c2 = p2.getClass(); 

        System.out.println(c1==c2);

    }

}
public class Person {

    private String name;
    private int age;
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    public Person() {
        super();
        System.out.println("person run");

    }

    public void show(){
        System.out.println("person show run");
    }

    public static void staticShow(){
        System.out.println("person static show run");
    }

    public void paramShow(String name,int age){
        System.out.println("show:"+name+"---"+age);
    }

}
时间: 2024-10-08 20:50:41

反射获取Class对象的三种方式的相关文章

Java反射获取class对象的三种方式,反射创建对象的两种方式

Java反射获取class对象的三种方式,反射创建对象的两种方式 1.获取Class对象 在 Java API 中,提供了获取 Class 类对象的三种方法: 第一种,使用 Class.forName 静态方法. 前提:已明确类的全路径名. 第二种,使用 .class 方法. 说明:仅适合在编译前就已经明确要操作的 Class 第三种,使用类对象的 getClass() 方法. 适合有对象示例的情况下 package com.reflection; /** * Created by Liuxd

java 反射 获取Class对象的三种方式

String str="hello world"; //方式一 :通过对象的getClass()方法 Class<?> clazz1 =str.getClass(); //方式二:通过类的class属性 Class<?> clazz2 =String.class; //方式三:通过Class类的静态方法forName(String className) Class<?> clazz3 =Class.forName("java.lang.St

java webservice服务器端获取request对象的三种方式

有的时候在webservice里我们需要获取request对象和response对象,比如想要获得客户端的访问ip的时候就需要这么做,下面说三种方式,当然三种方式可能是针对不同方式部署webservice获取request对象的方法. 第一种:先配置注入: @Resource private WebServiceContext webServiceContext; 其次是下面的代码: MessageContext mc = webServiceContext.getMessageContext(

获取Class对象的三种方式

1:通过每个对象都具备的方法getClass来获取.弊端:必须要创建该类对象,才可以调用getClass方法. 2:每一个数据类型(基本数据类型和引用数据类型)都有一个静态的属性class.弊端:必须要先明确该类. 前两种方式不利于程序的扩展,因为都需要在程序使用具体的类来完成. 3:使用的Class类中的方法,静态的forName方法. 指定什么类名,就获取什么类字节码文件对象,这种方式的扩展性最强,只要将类名的字符串传入即可. // 1. 根据给定的类名来获得  用于类加载 String c

反射机制获取Class对象的三种方式:

Person person = new Person(); //1.通过Object类的getClass()方法:(需要先实例化一个对象) Class clazz1 = person.getClass(); //2.通过对象实例方法获取对象:(需要先实例化一个对象) Class clazz2 = person.class; //3.类的全路径:(不许呀实例对象) Class clazz3 = Class.forName("com.cn.Person"); 对于有空的构造函数的类可以直接

反射机制获取Class对象的三种方式

1.通过getClass()方法:(通过对象) Class c1 = obj.getClass(); 2.通过对象实例方法获取对象:(通过对象) Class c2= obj.class; 3.类的全路径:(通过类名) Class c3 = Class.forName("package.className"); 原文地址:https://www.cnblogs.com/Peter-Yu/p/9108724.html

jdbc 获取connection 对象的三种方式

获取数据库连接方法一:驱动实现类 1 //创建mysql的Driver对象 2 Driver driver=new com.mysql.jdbc.Driver(); 3 //jdbc url 定位一个数据库: 4 String url="jdbc:mysql://localhost:3306/jdbcdb"; 5 //用于存储用户名和密码 6 Properties info=new Properties(); 7 info.put("user", "roo

获取class对象的三种方法以及通过Class对象获取某个类中变量,方法,访问成员

public class ReflexAndClass { public static void main(String[] args) throws Exception { /** * 获取Class对象的三种方式 * 1 Object --> getClass(); * 2 任何数据类型(包括基本数据类型)都有一个静态的class属性 * 3 通过Class类的静态方法:forName(String className)(常用) * * * 注意:在运行期间,一个类,只有一个Class对象产

反射概念:获取class文件对象的三种方式

反射 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. 要想解剖一个类,必须先要获取到该类的字节码文件对象.而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象. 利用class文件对象,去使用该文件中的成员变量,构造方法,成员方法. 例子1:获取class文件对象的三种方式 public cla