如何使用反射
如何使用反射[*]通过 Class 对象的 newInstance() 方法
package com.lut.study_java_demo1;<br><br>import java.util.Scanner;<br><br>/**<br> * @author Zhou<br> * @desc 反射的使用<br> * @date 2024/8/7 16:13<br> */<br>public class _21_new_reflect {<br> public static void main(String[] args) throws Exception{<br> String a=new Scanner(System.in).nextLine();<br> Class<?> c=Class.forName("com.lut.study_java_demo1.Reflect");<br> Reflect reflect=(Reflect)c.newInstance();<br> reflect.showString(a);<br> }<br>}<br>class Reflect{<br> public Reflect(String a){<br> System.out.println(a);<br> }<br> void showString(String s){<br> System.out.println(s);<br> }<br>}首先使用绝对路径创建一个Reflect类的Class对象,然后通过Reflect类的Class对象创建了一个该类的实例,将地址赋给引用变量reflect,通过引用变量调用Reflect类的方法,实现该方法。
[*]通过 Constructor (调用无参构造方法)对象的 newInstance() 方法
package com.lut.study_java_demo1;<br><br>import java.util.Scanner;<br><br>/**<br> * @author Zhou<br> * @desc 反射的使用<br> * @date 2024/8/7 16:13<br> */<br>public class _21_new_reflect {<br> public static void main(String[] args) throws Exception{<br> String a=new Scanner(System.in).nextLine();<br> Class<?> c=Class.forName("com.lut.study_java_demo1.Reflect");<br> //获取一个没有参数的构造方法<br> Constructor constructor=c.getConstructor();<br> Reflect reflect=(Reflect)constructor.newInstance();<br> reflect.showString(a);<br> }<br>}<br>class Reflect{<br> public Reflect(String a){<br> System.out.println(a);<br> }<br> void showString(String s){<br> System.out.println(s);<br> }<br>}
[*]通过 Constructor (调用有参构造方法)对象的 newInstance() 方法
package com.lut.study_java_demo1;<br><br>import java.util.Scanner;<br><br>/**<br> * @author Zhou<br> * @desc 反射的使用<br> * @date 2024/8/7 16:13<br> */<br>public class _21_new_reflect {<br> public static void main(String[] args) throws Exception{<br> String a=new Scanner(System.in).nextLine();<br> Class<?> c=Class.forName("com.lut.study_java_demo1.Reflect");<br> //获取一个可以是String类型参数的构造方法<br> Constructor constructor=c.getConstructor(String.class);<br> Reflect reflect=(Reflect)constructor.newInstance("Hello");<br> reflect.showString(a);<br> }<br>}<br>class Reflect{<br> public Reflect(String a){<br> System.out.println(a);<br> }<br> void showString(String s){<br> System.out.println(s);<br> }<br>}
[*]获取类的成员变量的信息
Field[] fields = c.getDeclaredFields();
[*]获得类方法
Method[] methods = c.getDeclaredMethods();
[*]获得构造函数
Constructor[] constructors = c.getDeclaredConstructors();
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]