java--反射--Class类分析
2021/6/28 20:24:06
本文主要是介绍java--反射--Class类分析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 基本介绍:
-
package com.model.Class; import com.model.reflection.Cat; /** *@Description:测试类 *@Author: 张紫韩 *@Crete 2021/6/28 16:56 * * 介绍Class类的特点 */public class classDemo01 { /** * 创建某个类的实例对象是都会创建这个类的 Class类对象, * 且只创建一个Class类对象,如果使用 new 创建了就不会在反射阶段创建了 * * * */ public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException { //传统的方法创建实例对象过程中,会创建一个 class类对象 Cat cat = new Cat(); /* 通过Class类 的loadClass方法创建了Cat类的Class类对象 public Class<?> loadClass(String name) throws ClassNotFoundException { return loadClass(name, false); } * */ Class<?> aClass = Class.forName("com.model.reflection.Cat"); //得到Class类对象,存放于堆中 Object o = aClass.newInstance(); //得到实例对象 //反射机制创建类的实例对象过程中,也同样是使用了Class类的loadClass方法加载Cat类的Class类对象 /* 通过Class类 的loadClass方法创建了Cat类的Class类对象 public Class<?> loadClass(String name) throws ClassNotFoundException { return loadClass(name, false); } * */ } }
-
Class应用实例:
-
package com.model.Class; import java.lang.reflect.Field; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/6/28 17:40 * * 演示Class类的常用方法 */ public class ClassDemo02 { public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchFieldException { String classFullPath="com.model.Class.Car"; // 1.获取Car的类对象 Class<?> aClass = Class.forName(classFullPath); // 2.输出类对象 System.out.println(aClass); //显示aClass对象,是哪个类的的Class对象:com.model.Class.Car System.out.println(aClass.getClass()); //显示aClass的运行类型 java.lang.Class // 3.得到包名 System.out.println(aClass.getPackage().getName()); // 4.全类名 System.out.println(aClass.getName()); // 5.实例对象 Object o = aClass.newInstance(); Car car= (Car) o; System.out.println(car); // 6.得到属性 Field brand = aClass.getField("brand"); brand.set(car, "奔驰"); System.out.println(brand.get(o)); // 7.拿到所有的字段属性 Field[] fields = aClass.getFields(); for (int i = 0; i < fields.length; i++) { System.out.println(fields[i].get(o)); } for (Field f:fields){ System.out.println(f.get(o)); } } }
这篇关于java--反射--Class类分析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略