• 反射


    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());//输出参数类型
    		}
    	}
    
    }
    
  • 相关阅读:
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    1. Two Sum
    关于LSTM核心思想的部分理解
    常用正则表达式RE(慕课网_Meshare_huang)
    安装Keras出现的问题
    win系统下如何安装xgboost,开发环境是anaconda,以及这中间需要注意的问题
    Shell基础
    关机与重启命令
    压缩与解压缩命令
  • 原文地址:https://www.cnblogs.com/lnzr/p/4558673.html
Copyright © 2020-2023  润新知