测试代码:
Test test=new Test();
Class c1=test.getClass();
//获取所有构造方法
//Constructor[] declaredConstructors = c1.getDeclaredConstructors();
//获取所有public构造方法
Constructor[] declaredConstructors = c1.getConstructors();
for (int i = 0; i < declaredConstructors.length; i++) {
System.out.print(Modifier.toString(declaredConstructors[i].getModifiers())+"参数: ");
//获取构造方法的所有参数类型
Class[] parameterTypes = declaredConstructors[i].getParameterTypes();
for (int j = 0; j < parameterTypes.length; j++) {
System.out.print(parameterTypes[j].getName()+" ");
}
System.out.println();
}
System.out.println("==========================");
try {
// Constructor declaredConstructor = c1.getDeclaredConstructor(int.class,String.class);
// Object zhangsan = declaredConstructor.newInstance(24, "张三");
Constructor declaredConstructor = c1.getDeclaredConstructor(String.class);
declaredConstructor.setAccessible(true);
Object zhangsan = declaredConstructor.newInstance("张三");
Method method = c1.getDeclaredMethod("wel", String.class);
method.setAccessible(true);
method.invoke(zhangsan,"哈喽,朋友");
Field field = c1.getDeclaredField("name");
field.setAccessible(true);
field.set(zhangsan,"jjt");
System.out.println(field.get(zhangsan).toString());
System.out.print(Modifier.toString(declaredConstructor.getModifiers())+":");
Class[] parameterTypes = declaredConstructor.getParameterTypes();
for (int i = 0; i < parameterTypes.length; i++) {
System.out.print(parameterTypes[i].getName()+" ");
}
System.out.println();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
class Test{
private int age;
private String name;
private int testint;
public Test(int age) {
this.age = age;
}
public Test(int age, String name) {
this.age = age;
this.name = name;
System.out.println(name+"的年龄:"+age);
}
private Test(String name) {
this.name = name;
System.out.println("name = " + name);
}
public Test() {
}
private void wel(String a){
System.out.println("a = " + a);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)