zoukankan      html  css  js  c++  java
  • Java反射的几个小实例

    //显示父类和所有接口
    	public static void showSuperclassAndInterface(String className){
    		try {
    			Class<?> clazz=Class.forName(className);
    			System.out.println(className+"的父类是:\n"+clazz.getSuperclass().getName());
    			
    			System.out.println("\n"+className+"所包含的接口有:");
    			Class<?>[] interfaces=clazz.getInterfaces();
    			for(Class<?> i:interfaces){
    				System.out.println(i.getName());
    			}
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    	}
    	
    	//显示此类中所有set方法
    	public static Method[] showSetMethod(String className){
    		List<Method> list=new ArrayList<Method>();
    		try {
    			Class<?> clazz = Class.forName(className);
    			Method[] methods=clazz.getMethods();
    			for(Method m:methods){
    				if(m.getName().indexOf("set")==0){
    					list.add(m);
    				}
    			}
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    		return list.toArray(new Method[list.size()]);
    	}
    
    	//显示所有属性的值
    	public static void showAllPropertyValue(Object bean){
    		Class<?> clazz=bean.getClass();
    		
    		Method[] methods=clazz.getMethods();
    		
    		List<Method> list=new ArrayList<Method>();
    		
    		for(Method m:methods){
    			if(m.getName().indexOf("get")==0){
    				list.add(m);
    			}
    		}
    		
    		for(Method m:list){
    			try {
    				System.out.println(m.getName().substring(3)+"屬性的值是:"+m.invoke(bean, null));
    			} catch (IllegalArgumentException e) {
    				e.printStackTrace();
    			} catch (IllegalAccessException e) {
    				e.printStackTrace();
    			} catch (InvocationTargetException e) {
    				e.printStackTrace();
    			}
    		}
    		
    	}
    	
    	public static void main(String[] args) {
    		//showSuperclassAndInterface("java.util.ArrayList");
    		/*for(Method m : showSetMethod("Student")){
    			System.out.println(m.getName());
    		}*/
    		Student student=new Student();
    		student.setName("張三");
    		student.setAge(22);
    		
    		showAllPropertyValue(student);
    
  • 相关阅读:
    [Linux] VIM Practical Note
    [JAVA] JAVA 文档注释
    [JAVA] JAVA 类路径
    [JAVA] JAVA JDK 安装配置
    [Dynamic Language] Python定时任务框架
    [DataBase] MongoDB (8) 副本集
    [DataBase] MongoDB (7) MongoDB 索引
    [DabaBase] MongoDB (6) 启动、停止、相关系统配置及安全性设置
    [Dynamic Language] 用Sphinx自动生成python代码注释文档
    [JAVA] java class 基本定义 Note
  • 原文地址:https://www.cnblogs.com/Laupaul/p/2338280.html
Copyright © 2011-2022 走看看