zoukankan      html  css  js  c++  java
  • 通过Java反射机制调用方法

    //20210204
    写在前面:最近再把Java反射和注释知识点过一遍,在这里记一下重要的点,本文讲述反射机制创建对象并调用方法

    主要任务:

    • 使用类反射机制实现对象创建以及方法调用
    • 与普通方式实现对象创建以及方法调用,并对比二者区别

    程序源代码:

    //此处实现String的反射调用,测试方法为equals方法
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Method;
    import java.lang.reflect.Modifier;
    
    public class MethodReflection {
    
        public static void main(String[] args) throws Exception{
            String test = new String("hello world");
            System.out.println(test.equals("hello world"));
    
            Class st = Class.forName("java.lang.String");
            Constructor con = st.getDeclaredConstructor(String.class);//获取有参构造
            Object obj = con.newInstance("hello world");
            Method[] methods = st.getMethods();
    //        for (Method method : methods) {
    //            System.out.println(method.getName()+" "+ Modifier.toString(method.getModifiers()));
    //        }
            System.out.println(methods[0].getName());
    
            Object value = methods[0].invoke(obj,"hello world");
            System.out.println(value.toString());
        }
    
    }
    
    
    • 输出如下:

    • 对比:

      • 使用普通方法
        • 优点:方便
        • 缺点:不灵活,一旦需求改了就需要改源代码
      • 使用反射机制
        • 优点:灵活,可以把关键内容写进配置文件,java文件只是构造一个模板,需求要改的时候更改配置文件即可
        • 缺点:不方便,程序冗长

    附录:

    小知识点——关于可变长度参数[...]:

    • Java中,一个方法可以传入不定长度的参数,使用参数类型+‘...’指定即可
    • 例:
    //'...'的使用举例
    
    public static void test(String... args){
    	for(Stirng str : args){
    		System.out.println(str);//输出传入参数列表
    	}
    }
    
    public static void main(String[] args){
    	test("hello","world");
    }
    
    • 输出如下:

    以上
    希望对大家有所帮助

  • 相关阅读:
    函数的进阶
    几个基础 类型循环删除
    函数的初识
    python3的 基础
    python3 最基础
    demo
    [转] ajax方法
    <codis><jodis>
    <Redis Advance><Pipelining><Memory Optimization><Expire><Transactions>
    <HBase><Scan>
  • 原文地址:https://www.cnblogs.com/lavender-pansy/p/14373956.html
Copyright © 2011-2022 走看看