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

    <span style="font-size:18px;">package fanshe;  
    /** 
     * 获取Class对象的三种方式 
     * 1 Object ——> getClass(); 
     * 2 任何数据类型(包括基本数据类型)都有一个“静态”的class属性 
     * 3 通过Class类的静态方法:forName(String  className)(常用) 
     * 
     */  
    public class Fanshe {  
        public static void main(String[] args) {  
            //第一种方式获取Class对象    
            Student stu1 = new Student();//这一new 产生一个Student对象,一个Class对象。  
            Class stuClass = stu1.getClass();//获取Class对象  
            System.out.println(stuClass.getName());  
              
            //第二种方式获取Class对象  
            Class stuClass2 = Student.class;  
            System.out.println(stuClass == stuClass2);//判断第一种方式获取的Class对象和第二种方式获取的是否是同一个  
              
            //第三种方式获取Class对象  
            try {  
                Class stuClass3 = Class.forName("fanshe.Student");//注意此字符串必须是真实路径,就是带包名的类路径,包名.类名  
                System.out.println(stuClass3 == stuClass2);//判断三种方式是否获取的是同一个Class对象  
            } catch (ClassNotFoundException e) {  
                e.printStackTrace();  
            }  
              
        }  
    }</span>  

    注意:在运行期间,一个类,只有一个Class对象产生。

    三种方式常用第三种,第一种对象都有了还要反射干什么。第二种需要导入类的包,依赖太强,不导包就抛编译错误。一般都第三种,一个字符串可以传入也可写在配置文件中等多种方法。
     
    java的反射用法:(异常请自行处理)
    ①找到类:Class cl = Class.forName("java.util.Date");
    ②创建对象(要求这个类中含有空参数的构造方法):Object obj = cl.newInstence();
    ③根据名称和参数找方法:Method method1 = cl.getMethod("getTime");//如果没有参数不用写第二个参数如果有参数的如:Method method2 = cl.getMethod("setTime",long.class);
    ④在某个对象上面执行方法,Object result = method1.invoke(obj);//如果有参数的Object result = method2.invoke(obj,21317362721);
    执行的方如果有返回值,将返回值返回,否则返回null
     
  • 相关阅读:
    iptables 增删查改
    在Ubuntu14.04上安装WordPress4搭建技术博客
    Revit 二次开发之 零件
    Revit 二次开发之 结构层次
    revit二次开发之 过滤器二FilteredElementCollector收集器
    Revit二次开发之 动态模型更新(DMU: Dynamic Model Update)功能
    revit二次开发之 过滤器一
    Revit 二次开发之标高参数
    Revit二次开发之 错误
    Visual Studio删除所有的注释和空行
  • 原文地址:https://www.cnblogs.com/CuiHongYu/p/8436189.html
Copyright © 2011-2022 走看看