zoukankan      html  css  js  c++  java
  • 反射

    package com.test;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.lang.reflect.Parameter;
    
    
    class Student{
    	public String name = "afd";
    	public String sex;
    	public String tel;
    
    	
    	public static void print(String name, int lv){
    		System.out.println("name = " + name + ":" + lv );
    	}
    }
    
    /**
     * 
     * @author 
     * @date 2015年6月7日 下午2:43:11
     * @version 版本号码
     * @TODO 描述
     * 什么是class对象:编写一个新的java类的时候,JVM会把Java类编译成class对象,放在.class文件中,
     * 				在运行的时候,如果需要这Java类的对象,JVM会检查.class文件是否已经装载到内存中,如果已经装载,就根据
     * 				.class文件 生成一个实例对象
     * 生成class对象的方法:1.类名.class 2.Class.forName("类名")  3.实例对象.class
     */
    public class Reflaction {
    
    	public static void main(String[] args) throws Exception {
    		Class a = Student.class;
    //		Class b = new Student().getClass();
    //		Class c = Class.forName("Student");
    		Field fieldName = a.getField("name");
    		Object o = fieldName.get(new Student());
    		System.out.println(o.toString());
    		
    		invokeMethod(a);
    	}
    	
    	public static void invokeMethod(Class clazz) throws Exception{
    		Method[] methods = clazz.getDeclaredMethods();//获取公开的方法
    		for (Method m : methods){
    			Class[] p = m.getParameterTypes();//获取方法参数的类型
    			m.invoke(null, "小张",11);//调用方法, 如果调用的静态方法 不需要 实例对象(null)
    			System.out.println(clazz.isInstance(new Student()));//判断 对象是不是某个类的实例
    			System.out.println(methods.length);
    			System.out.println(p[0].getName());//输出参数类型
    		}
    	}
    
    }
    
  • 相关阅读:
    拓扑排序
    最短路径(Dijkstra,SPFA,Floyd)
    最小生成树(Prim)
    最长公共子序列(DP)(二种数组实现+扩展)
    HDU3068(最长回文串)
    python pip 阿里云内网安装地址
    python matplotlib画图改为可写中文
    win10 安装 basemap
    Liunx 安装basemap
    Docker 命令大全
  • 原文地址:https://www.cnblogs.com/lnzr/p/4558673.html
Copyright © 2011-2022 走看看