java getinstance 反射_Java 基础篇之反射

本文详细介绍了Java反射机制,包括如何获取Class对象、类信息,如构造器、方法、注解及内部类。通过反射可以动态创建对象,调用方法,访问成员变量。示例展示了通过Class.forName()、newInstance()和getConstructor()等方式创建对象,以及Method和Constructor的使用。此外,还探讨了反射在对象池和配置文件解析中的应用。
摘要由CSDN通过智能技术生成

使用反射获取程序运行时的对象和类的真实信息。

获取 Class 对象

每个类被加载之后,系统会为该类生成一个对应的 Class 对象,通过该 Class 对象可以访问到 JVM 中的这个类。

使用 Class 类的 forName(String clazzName) 静态方法。字符串参数的值是某个类的全限定类名,必须包含完整的包名

调用某个类的 class 属性

调用某个对象的 getClass() 方法。该方法是 java.lang.Object 类中的一个方法,所有的 Java 对象都可以调用,返回该对象所属类对应的 Class 对象

获取 Class 对象中信息

Class 类提供了大量的实例方法来获取该 class 对象所对应的类的详细信息。更多请参考 API。

import java.lang.reflect.*;

import java.lang.annotation.*;

public class ClassTest {

private ClassTest() {

}

public ClassTest(String name) {

System.out.println("执行有参数的构造器");

}

public void info() {

System.out.println("执行无参数的info方法");

}

public void info(String str) {

System.out.println("执行有参数的info方法" + ",其 str 参数值: " + str);

}

class Inner {

}

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

Class clazz = ClassTest.class;

// 获取 clazz 对象所对应类的全部构造器

Constructor>[] ctros = clazz.getDeclaredConstructors();

System.out.println("ClassTest 的全部构造器如下: ");

for (Constructor c : ctros) {

System.out.println(c);

}

// 获取 clazz 对象所对应类的全部 public 构造器

Constructor>[] publicCtors = clazz.getConstructors();

System.out.println("ClassTest的全部public构造器如下:");

for (Constructor c : publicCtors) {

System.out.println(c);

}

// 获取 clazz 对象所对应类的全部 public 方法

Method[] mtds = clazz.getMethods();

System.out.println("ClassTest 的全部 public 方法如下: ");

for (Method md : mtds) {

System.out.println(md);

}

// 获取 clazz 对象所对应类的指定方法

System.out.println("ClassTest 里带一个字符串参数的 info 方法为:" + clazz.getMethod("info", String.class));

// 获取 clazz 对象所对应类的全部注解

Annotation[] anns = clazz.getAnnotations();

System.out.println("

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值