zoukankan      html  css  js  c++  java
  • java反射:类对象的简单使用

    定义一个简单的Person类,其中含有id、name、gender等基本信息,对这些属性进行get/set/tostring方法之后,进行主要测试编写:

    import java.lang.reflect.Constructor;
    import java.lang.reflect.InvocationTargetException;
    
    
    public class Test2 {
        public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
            //先将clazzPerson类对象搞到手
            Class<?> clazzPerson = Class.forName("Person");
    
            //getConstructors:获得所有公共类对象方法
            Constructor<?>[] cs = clazzPerson.getConstructors();
            //然后遍历它们
            for(Constructor<?> c1:cs){
                System.out.println("Constructor:" + c1);
            }
            System.out.println("_____________");
            //获得所有包含接受了private属性的方法(也就是不管你是个什么东西都要把你给搞过来)
            Constructor<?>[] cs2 = clazzPerson.getDeclaredConstructors();
            for (Constructor<?> c2 : cs2){
                System.out.println("Constructor:" + c2);
            }
            System.out.println("__________");
            //通过  参数形式  搞到特定的某个构造方法
            Constructor<?> c3 = clazzPerson.getDeclaredConstructor(int.class,String.class,String.class);
            System.out.println(c3);
    
            /**
             * 使用newInstance来创建类对新实体
             * 搞到手了的具体使用
             */
            Object o = c3.newInstance(1,"yuer","???");
            Person p =(Person) o;
            System.out.println(p);
        }
    }
    import java.lang.reflect.Constructor;
    import java.lang.reflect.InvocationTargetException;
    
    
    public class Test2 {
        public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
            //先将clazzPerson类对象搞到手
            Class<?> clazzPerson = Class.forName("Person");
    
            //getConstructors:获得所有公共类对象方法
            Constructor<?>[] cs = clazzPerson.getConstructors();
            //然后遍历它们
            for(Constructor<?> c1:cs){
                System.out.println("Constructor:" + c1);
            }
            System.out.println("_____________");
            //获得所有包含接受了private属性的方法(也就是不管你是个什么东西都要把你给搞过来)
            Constructor<?>[] cs2 = clazzPerson.getDeclaredConstructors();
            for (Constructor<?> c2 : cs2){
                System.out.println("Constructor:" + c2);
            }
            System.out.println("__________");
            //通过  参数形式  搞到特定的某个构造方法
            Constructor<?> c3 = clazzPerson.getDeclaredConstructor(int.class,String.class,String.class);
            System.out.println(c3);
    
            /**
             * 使用newInstance来创建类对新实体
             * 搞到手了的具体使用
             */
            Object o = c3.newInstance(1,"yuer","???");
            Person p =(Person) o;
            System.out.println(p);
        }
    }
  • 相关阅读:
    (4.5.4)Android測试TestCase单元(Unit test)測试和instrumentationCase单元測试
    JVM、垃圾回收、内存调优、常见參数
    相关系数图可视化
    Codeforces 558(C、D、E)总结
    [Windows 64] (搬运)价值¥ 6,499的软件Navicat Premium11.2.11 最新版及其注册机
    ORA-12737: Instant Client Light: unsupported server character set CHS16GBK/ZHS16GBK解决方案
    计蒜客练习
    站在巨著之上谈泛型(转载)
    java util包概述
    Calender的使用详解
  • 原文地址:https://www.cnblogs.com/fanqiexin/p/11151479.html
Copyright © 2011-2022 走看看