java常用的几个反射方法

db一张table里存了 1列是表名,1列是column名
要求根据查出来的表明反射到对应的class上,然后取column值
因为class名和方法名都不固定,所以只能用反射

方法的反射
https://blog.csdn.net/u013361445/article/details/49997693

    // 带参数
    protected Object invokeMethod(Object owner, String methodName ,Object[] args) {  
   
        Class ownerClass = owner.getClass();
        
        Class[] argsClass = new Class[args.length];  
        for (int i = 0, j = args.length; i < j; i++) {  
            argsClass[i] = args[i].getClass();  
        } 
        Object result = null;
        try {
            Method method = ownerClass.getMethod(methodName,argsClass);  
            result = method.invoke(owner, args);
        } catch (Exception e) {

        }

        return result;
    }  
 
    // 不带参数
    protected String invokeMethod(Object owner, String methodName ) {  
   
        Class ownerClass = owner.getClass();
      
        String result = null;
        try {
            Method method = ownerClass.getMethod(methodName);  
            result = String.valueOf(method.invoke(owner));
        } catch (Exception e) {
            
        }

        return result;
    }  

类的反射
https://blog.csdn.net/panda1234lee/article/details/9009719

/*通过Constructor.newInstance()创建新的类示例*/   
    private void newInstanceByConstructorNewInstance(){   
        try {/*可以使用相对路径,同一个包中可以不用带包路径*/   
            Class c=Class.forName("A");   
            /*以下调用无参的、私有构造函数*/   
            Constructor c0=c.getDeclaredConstructor();   
            c0.setAccessible(true);   
            A a0=(A)c0.newInstance();   
            /*以下调用带参的、私有构造函数*/   
            Constructor c1=c.getDeclaredConstructor(new Class[]{int.class,int.class});   
            c1.setAccessible(true);   
            A a1=(A)c1.newInstance(new Object[]{5,6});   
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
    }   
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容