郭卫东 发表于 2024-8-7 18:04:35

如何使用反射

如何使用反射


[*]通过 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]
查看完整版本: 如何使用反射