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);
    
  • 相关阅读:
    servlet描述
    利用uuid生成8位随机数
    使用cxf将wsdl生成java代码
    nn.ConvTranspose2d的参数output_padding的作用
    CNN 逆卷积(fractionally-strided convolutions)
    梯度消失 梯度爆炸
    CNN 卷积神经网络中的 接受视野(Receptive Field)
    加下标 上标
    图形操作
    Python中打开文件的方式(With open)
  • 原文地址:https://www.cnblogs.com/Laupaul/p/2338280.html
Copyright © 2011-2022 走看看