精华内容
下载资源
问答
  • 获取Class类的四种方式:

    千次阅读 2018-01-25 23:25:42
    2.通过运行时类的对象获取 Person p = new Person(); Class clazz = p.getClass(); 3.通过Class的静态方法获取:体现反射的动态性 Class clazz = Class.forName("java.util.commons");4.通过类的

    1.调用运行时类本身的.class属性

    Class clazz = Person.class;
    2.通过运行时类的对象获取
    Person p = new Person();
    Class clazz = p.getClass();

    3.通过Class的静态方法获取:体现反射的动态性

    Class clazz = Class.forName("java.util.commons");
    4.通过类的加载器

    String className = "java.util.commons";
    ClassLoader cl = this.getClass().getClassLoader();
    Class clazz = cl.loaderClass(className);
    展开全文
  • 通过 编译(javac.exe),生成对应.class文件,之后使用java.exe(JVM的类加载器来完成)加载此.class文件,此.class文件加载到内存以后,就是一个运行时,存放在缓存区,这个运行时就是一个Class的实例。...

    我们创建了一个类,通过 编译(javac.exe),生成对应的.class文件,之后使用java.exe(JVM的类加载器来完成)加载此.class文件,此.class文件加载到内存以后,就是一个运行时类,存放在缓存区,这个运行时类就是一个

    Class的实例。

    java.lang.class是反射的源头。

    它有如下几个特点:

    1.每一个运行时类只加载一次

    2.有了Class的实例之后,我们才可以进行如下的操作:

    2.1创建对应的运行时类的对象

    2.2)获取对应的运行时类的完整结构(属性、方法、构造器、内部类、父类、所在包、注解、异常

    2.3调用对应的运行时类的指定的结构(属性、方法、构造器)

    2.4)反射的应用:动态代理。


    在正常方式下:我们需要引入需要的“包类”名称——通过new实例化——取得实例化的对象

    反射方式:实例化对象——getClass()方法——得到完整的“包类”名称。

    这相当于是一个倒序的过程。

    如何获取Class实例呢?

    Class只有在实例后才能开始进行反射。下面是实例化的四种方式:

    1.调用运行时类本身的.class属性

    [java] view plain copy
    1. Class clazz1 =Person.class;  
    2. System.out.println(clazz1.getName());  
    3.   
    4. Class clazz2 = String.class;  
    5. System.out.println(clazz2.getName);  

    2.通过运行时类的对象获取

    [java] view plain copy
    1. Person  p =new Person();  
    2. Class clazz3 = p.getClass();  
    3. System.out.prinln(clazz3.getName());<strong>  
    4. lt;/strong>  

    3. 通过Class静态方法获取(反射的动态性)

    [java] view plain copy
    1. String className ="com.arguigu.java.Person";  
    2. Class clazz4 = Class.forName(className);  
    3. //clazz4.newInstance();  
    4. System.out.prinln(clazz4.getName());  

    4.通过类的加载器

    [java] view plain copy
    1. ClassLoader  classLoader = this.getClass().getClassLoader();  
    2. Class  clazz5 = classLoader.loadClass(className);  
    3. System.out.println(clazz5.getName());  

    用途

    1.可以创建对应的运行时类的对象

    2.获取对应的运行时类的完整的类的结构:属性/方法/构造器//父类/泛型/注解/异常/内部类

    3.可以调用对应的运行时类中指定的结构(某个指定的属性/方法/构造器)


    以上就是Class实例化的四种方式

    展开全文
  • java反射(二):获取Class类的四种方式

    千次阅读 2015-02-27 21:55:37
    编译(javac.exe),生成对应.class文件,之后使用java.exe(JVM的类加载器来完成)加载此.class文件,此.class文件加载到内存以后,就是一个运行时,存放在缓存区,这个运行时就是一个 Class的实例。 java.lang....
    
    

    我们创建了一个类,通过 编译(javac.exe),生成对应的.class文件,之后使用java.exe(JVM的类加载器来完成)加载此.class文件,此.class文件加载到内存以后,就是一个运行时类,存放在缓存区,这个运行时类就是一个

    Class的实例。

    java.lang.class是反射的源头。

    它有如下几个特点:

    1.每一个运行时类只加载一次

    2.有了Class的实例之后,我们才可以进行如下的操作:

    2.1创建对应的运行时类的对象

    2.2)获取对应的运行时类的完整结构(属性、方法、构造器、内部类、父类、所在包、注解、异常

    2.3调用对应的运行时类的指定的结构(属性、方法、构造器)

    2.4)反射的应用:动态代理。


    在正常方式下:我们需要引入需要的“包类”名称——通过new实例化——取得实例化的对象

    反射方式:实例化对象——getClass()方法——得到完整的“包类”名称。

    这相当于是一个倒序的过程。

    如何获取Class实例呢?

    Class只有在实例后才能开始进行反射。下面是实例化的四种方式:

    1.调用运行时类本身的.class属性

    		Class clazz1 =Person.class;
    		System.out.println(clazz1.getName());
    		
    		Class clazz2 = String.class;
    		System.out.println(clazz2.getName);
    

    2.通过运行时类的对象获取

    	Person  p =new Person();
    	Class clazz3 = p.getClass();
    	System.out.prinln(clazz3.getName());<strong>
    </strong>

    3. 通过Class的静态方法获取(反射的动态性)

    String className ="com.arguigu.java.Person";
    Class clazz4 = Class.forName(className);
    //clazz4.newInstance();
    System.out.prinln(clazz4.getName());

    4.通过类的加载器

    ClassLoader  classLoader = this.getClass().getClassLoader();
    Class  clazz5 = classLoader.loadClass(className);
    System.out.println(clazz5.getName());

    用途

    1.可以创建对应的运行时类的对象

    2.获取对应的运行时类的完整的类的结构:属性/方法/构造器//父类/泛型/注解/异常/内部类

    3.可以调用对应的运行时类中指定的结构(某个指定的属性/方法/构造器)


    以上就是Class实例化的四种方式,下一篇介绍第四种类加载器ClassLoader的使用。




    展开全文
  • 类的加载过程 程序在经过javac.exe命令后会生成一个或多个字节码文件(.class结尾的文件),接着使用java.exe命令对字节码文件进行... //方式1:调用运行时类的属性 .class Class cla1 = person.class; System.out

    类的加载过程

    程序在经过javac.exe命令后会生成一个或多个字节码文件(.class结尾的文件),接着使用java.exe命令对字节码文件进行解释运行,这时候就把字节码文件加载到内存中。加载到内存中的类成为运行时类,运行时类是Class的实例。

    @Test
    public void  test() throws ClassNotFoundException {
        //方式1:调用运行时类的属性  .class
        Class cla1 = person.class;
        System.out.println(cla1);
    
        //方式二:通过运行时类的对象,调用getClass()方法
        person p = new person();
        Class cla2 = p.getClass();
        System.out.println(cla2);
    
        //方式三:调用Class的静态方法 forName(String classPath)
        Class cla3 = Class.forName("com.reflection.person");
        System.out.println(cla3);
    
        //方式四:通过类的加载器
        ClassLoader classLoader = reflectionTest.class.getClassLoader();
        Class cla4 = classLoader.loadClass("com.reflection.person");
        System.out.println(cla4);
    
        System.out.println(cla1 == cla2);
        System.out.println(cla1 == cla3);
        System.out.println(cla1 == cla4);
    
    //运行结果
    //true
    //true
    //true
    //说明是同一个运行时类
    }
    展开全文
  • 获取Class实例的四种方式 前三种方式需要掌握! 第三种用的比较多 package com.fanshe; public class test { //反射之前对于Person的操作 public static void main(String[] args) throws Exception { //方式一...
  • java中反射获取Class对象的四种方式? 首先我们先了解一下Class类 程序经过java.exe命令编译以后,会生成一个或多个字节码文件().class,接着我们使用java.exe命名对某个字节码文件解释运行。相当于把某个字节码...
  • 1.通过ClassLoader对象loadClass()方法 比如以下方式: ClassLoader.getSystemClassLoader().loadClass("com.my.test.Hello") 去看一下loadClass的源码: public Class<?> loadClass(String name) throws ...
  • 方式一:类型名.class缺点: 要求编译期这个类型就要存在优点:最简洁@Testpublic void test01() {Class c1 = int.class;// 基本数据类型Class c2 = void.class;// 特殊空类型Class c3 = String.class;// 系统定义...
  • 反射应用中获取Class实例的四种方式

    千次阅读 2016-07-20 07:15:42
    //1.调用运行时类本身的.class属性 Class clazz1 = Person.class; System.out.println(clazz1.getName()); ...Class clazz2 = String.class;...System.out.println(clazz2....通过运行时类的对象获取 Person p = new Per
  • } //四种方法是同一个实例 public static void main(String[] args) throws Exception { //方式一:调用运行时类的属性 .class Class<Person> c1 = Person.class; System.out.println("c1 = " + c1); //方式二:...
  • //获取Class的实例的方式(前三种方式需要掌握) @Test public void test3() throws ClassNotFoundException { //方式一:调用运行时类的属性:.class Class clazz1 = Person.class; System.out.println(clazz1...
  • 调用运行时类的属性:.class Class clazz=Person.class; 方式二: 通过运行时类的对象 Person person=new Person(); Class clazz2=person.getClass(); 方式三:调用Class的静态方法:forName(String classPath) Cl.....
  • 上一节讲了获取,也就是获取class文件的三种方式,这一节主要讲获取对象的四种方式. 获取对象的四种方式包括有: new class clone (最大的区别就是,有没有复制对象,在堆内存中的是否为一个) reflect(最容易...
  • 1.使用new创建对象 2.通过反射的方式 3.通过clone的方式 4.通过反序列化的方式 一.... 使用new会增加耦合度,所以要尽量减少使用new的频率。并且new是使用强引用方式来创建...使用Class类的newInstance方法来创...
  • Struts2 Web 资源获取一个有四种方式,两个大 拦截器获取 Web 资源模式静态对象获取 Web 资源模式 第一种:实现ServletRequestAware、ServletResponseAware、ServletContextAware接口 struts.xml ...
  • JAVASE基础模块十二(反射 类的加载 类加载器 获取一个类的字节码文件对象的三种方式 获取构造函数 获取私有构造函数 反射创建对象) 类的加载 类的加载概述 当程序要使用某个类的时候 如果该类还未加载到内存...
  • 四种实现方式 对象.getClass() // 对象都有了还要反射干什么。所以一般不用这个 // 不会初始化对象 Class.forName() ​ // 使用最多的方式 ​ // 会初始化对象 对象类.class 属性 // 需要导入类的包,依赖太强...
  • Spring框架中获取连接池的四种方式

    千次阅读 2015-10-30 18:30:23
    DBCP包位于 /lib/jakarta-commons/commons-dbcp.jar,DBCP是一个依赖Jakarta commons-pool对象池机制数据库连接池,所以在路径下还必须包括/lib/jakarta-commons/commons-pool.jar。下面是使用DBCP配置...
  • 方法(一)、通过某个对象的getClass()方法取得Class,其中包含了类的许多信息。在其中找取得URL之类的方法,以便取得URL,然后调用URL的getpath()方法,取得字符串并稍作处理就得到该类的Class文件的绝对路径,在此...
  • Class对象获取的四种方式 Class初始化六大时机 Class装载过程(三步) 加载 -- 链接(验证 准备 解析) --初始化 加载: class文件 链接: 验证 :文件结构的验证 版本号 语义检查,如final不能有子类 准备: JVM为...
  • 在其中找取得URL之类的方法,以便取得URL,然后调用URL的getpath()方法,取得字符串并稍作处理就得到该类的Class文件的绝对路径,在此基础上就可以方便的使用相对路径。 Object.getClass().getResource("/&...
  • 本文将简单介绍四种获取对象方法。 假如有以下的类class Person(object): def __init__(self, name, age): self.name = name self.age = age def __str__(self): return 'name=%s, age=%s' % (self.name,...
  • 1、继承Thread类方式这种方式适用于执行特定任务,并且需要获取处理后数据场景。举例:一个用于累加数组内数据线程。public class AdditionThread extends Thread {private int sum = 0;private int[] ...
  • 防止防止.class被反编译4种方式方式一方式二方式三方式 方式一 隔离Java程序。将关键.class文件放在服务端,客户端通过访问服务端相关接口来获取服务,而不是直接获取.class文件 方式二 对.class文件进行加密...
  • Struts2 Web 资源获取一个有四种方式,两个大 拦截器获取 Web 资源模式静态对象获取 Web 资源模式 第一种:实现ServletRequestAware、ServletResponseAware、ServletContextAware接口 struts.xml ...
  • 本文将简单介绍四种获取对象方法。假如有以下的类class Person(object):def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return 'name=%s, age=%s' % (self.name, self.age)...
  • Java反射(1)-获取Class

    2020-03-04 11:42:46
    获取Class的四种方式 public void test3() throws ClassNotFoundException { //方式一:调用运行时类的属性:.class Class clazz1 = Person1.class; System.out.println(clazz1); //方式二:通过运行时类的...
  • 共有四种创建对象的方法:  1. 通过new语句实例化一个对象,  2. 通过反射机制创建对象...在反射机制中,class是一个非常重要的类,共有三种方法可以获取class类  1. class.forName("类的路径");  2. 类名.c
  • 在学习反射机制时,总结一下获得对象方式: 第一种方式:通过本身来获得对象 Java代码 ...Classclassname= this .getClass()...第二种方式:通过子类实例获取父类对象 Java代码 ClassNamecn= n...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 252
精华内容 100
关键字:

获取class类的四种方式