一、使用反射机制来
(1)获取一个类;
(2)获取类的构造函数
(3)通过构造函数来获取一个对象
package com.bjpowernode.java_learning;
import java.lang.reflect.*;
public class D120_1_ConstructerOfClass {
public static void main(String[] args) throws Exception{
//1.获取类
Class c = Class.forName("com.bjpowernode.java_learning.D120_Customer");
//2.获取特定的构造方法
Constructor con = c.getDeclaredConstructor(String.class,int.class);
//3.创建对象
Object o = con.newInstance("张三",25);
System.out.println(o);
}
}
class D120_Customer{
String name;
int age;
D120_Customer(String name,int age){
this.name = name;
this.age = age;
}
public String toString() {
return "Customer[" + name + "," + age + "]";
}
}
二、关于类获取父类和父接口
package com.bjpowernode.java_learning;
import java.lang.reflect.*;
public class D120_2_ParentClassAndInterfaceOfClass {
public static void main(String[] args) throws Exception{
Class c = Class.forName("java.lang.String");
//获取父类
Class superClass = c.getSuperclass();
System.out.println(superClass.getName());
System.out.println("================");
//获取父接口
Class[] ins = c.getInterfaces();
for(Class in:ins) {
System.out.println(in.getName());
}
}
}
三、反射的缺点
(1)性能问题。反射机制不是直接执行代码,性能问题的程度取决于程序中是如何使用反射的,如果他作为程序运行中相对很少涉及的部分,缓慢的性能将不会是问题。
(2)使用反射会模糊程序内部实际要发生的事情。
四、源码:
D120_1_ConstructerOfClass.java
D120_2_ParentClassAndInterfaceOfClass.java
https://github.com/ruigege66/Java/blob/master/D120_1_ConstructerOfClass.java
https://github.com/ruigege66/Java/blob/master/D120_2_ParentClassAndInterfaceOfClass.java
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料