如何使用反射

打印 上一主题 下一主题

主题 912|帖子 912|积分 2736

如何使用反射


  • 通过 Class 对象的 newInstance() 方法
    1. 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() 方法
    1. 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() 方法
    1. 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>}
    复制代码
  • 获取类的成员变量的信息
    1. Field[] fields = c.getDeclaredFields();
    复制代码
  • 获得类方法
    1. Method[] methods = c.getDeclaredMethods();
    复制代码
  • 获得构造函数
    1. Constructor[] constructors = c.getDeclaredConstructors();
    复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表