zoukankan      html  css  js  c++  java
  • invoke反射

    mark一下使用用法,原理以后在搞:

    无参数:

    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.lang.reflect.Method;
    
    public class Test {
    
        public static void main(String[] args) throws Exception {
            Method animalMethod = Animal.class.getDeclaredMethod("print");
            Method catMethod = Cat.class.getDeclaredMethod("print");
    
    
            Animal animal = new Animal();
            Cat cat = new Cat();
            animalMethod.invoke(cat);
            animalMethod.invoke(animal);
    
            catMethod.invoke(cat);
    //        catMethod.invoke(animal);
        }
    
    }
    
    
    class Animal {
    
        public void print() {
            System.out.println("Animal.print()");
        }
    }
    
    class Cat extends Animal {
    
        @Override
        public void print() {
            System.out.println("Cat.print()");
        }
    }

    输出:

    Cat.print()
    Animal.print()
    Cat.print()

    一个参数:

    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.lang.reflect.Method;
    
    public class Test {
    
        public static void main(String[] args) throws Exception {
            Method animalMethod = Animal.class.getDeclaredMethod("print",String.class);
            Method catMethod = Cat.class.getDeclaredMethod("print", String.class);
    
    
            Animal animal = new Animal();
            Cat cat = new Cat();
            animalMethod.invoke(cat, "a");  //  继承可以由上往下
            animalMethod.invoke(animal, "b"); 
    
            catMethod.invoke(cat,"c");
    //        catMethod.invoke(animal, "d"); // 由下往上会报错
        }
    
    }
    
    
    class Animal {
    
        public void print(String s) {
            System.out.printf("Animal.print() --%s
    ", s);
        }
    
    }
    
    class Cat extends Animal {
    
        @Override
        public void print(String s) {
            System.out.printf("Cat.print() --%s
    ", s);
        }
    
    }

    输出:

    Cat.print() --a
    Animal.print() --b
    Cat.print() --c

  • 相关阅读:
    shell习题第12题:批量创建用户
    shell习题第11题:输入数字执行命令
    二、python数据类型、字符编码、文件处理
    C语言之控制语言:分支和跳转
    c语言之控制语句:循环
    C语言之运算符、表达式和语句
    Python集合及其运算
    Python文本处理
    Python迭代器与格式化
    Python装饰器
  • 原文地址:https://www.cnblogs.com/zhzhlong/p/10175909.html
Copyright © 2011-2022 走看看