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);
        }
    }
  • 相关阅读:
    [转]asp.net core中的View Component
    [转] 三层架构、MVC
    [转]Javascript异步编程之三Promise: 像堆积木一样组织你的异步流程
    T4语法快速入门
    [转]ASP.NET Core 十种方式扩展你的 Views
    (装机)关于WINRE/ESP/LRS_ESP/MSR/PBR这些分区
    C#设计模式系列目录
    [转]RESTful API 设计指南
    .gitignore释疑
    [转]Subdirectory Checkouts with git sparse-checkout
  • 原文地址:https://www.cnblogs.com/fanqiexin/p/11151479.html
Copyright © 2011-2022 走看看