`

java利用反射得到实例

    博客分类:
  • java
阅读更多
对于面向接口编程的项目免不了要一反射相接触,动态得到实例:
public interface a {
 public void sayHello();
}
---------------------------
第一种情况是当
aImpl实现类为默认的构造方法:
根据类名aImpl动态得到实例
Class c=Class.forName("aImpl");
a instance=(a)c.newInstance();
a.sayHello();
------------
第二种情况当
aImpl为带参数的构造方法时:
Class o=Class.forName("aImpl");//aImpl为要实例化的例名,可以从配置文件当中获取
   Constructor cous = null;
   cous=o.getConstructor(new Class[]{String.class});//构造器的参数类型
   a ao=(a) cous.newInstance(new Object[]{"xxx"});//"xxx为传入的参数值
   ao.sayHello();
第三种就是构造器为私有的时候,我们通过方法获取实例getInstance()(自己定的)
Class o=Class.forName("aImpl");
   Method method=o.getMethod("getInstance",new Class[]{String.class});
//getInstance为返回为aImpl实例的方法名
    a ao=(a) method.invoke(null,new Object[]{"xxx"});//注意了前面的参数为null,是有
//条件的,就是要求getInstance为static类型的,我想大家都会这样设计的
       ao.sayHello();
做连接池的话,一种方式就是使用动态代理类,当Connection调用close()方法时,我们可以利用方法拦截器,在调用close方法的时候把连接放到缓存里面去,供以后再次利用..
a ao=(a)Proxy.newProxyInstance(aImpl.class.getClassLoader(),aImpl.class.getInterfaces(),
     new InvocationHandler()
     {

      public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
       Object re=null;
       System.out.println("before--------"+method.getName());
//在这里我们添加自己的一些处理方法,如把连接放到缓存去撒!
       //re=method.invoke(new aImpl(),args);
       return re;
      }
    
     });
   ao.sayHello();







具体代码:




 

package com.onoff.chijiunan;

public interface Adonoffshowbanner {
	
	public void on(boolean blon);
	
	public void off(boolean bloff);

}






                   try {  
                        Class<?> c = Class.forName(Adonoff.classname);//Adonoff.classname  包名+类名   
                        Adonoffshowbanner ads = (Adonoffshowbanner)c.newInstance();  
                        ads.off(false);  
                    } catch (ClassNotFoundException e) {  
                        e.printStackTrace();  
                    } catch (IllegalAccessException e) {  
                        e.printStackTrace();  
                    } catch (InstantiationException e) {  
                        e.printStackTrace();  
                    }  
分享到:
评论

相关推荐

    Java反射应用实例

    代码主要实现了Java反射应用实例, 包含利用反射方法创建对象(使用默认构造函数和自定义构造函数),访问对应对象的方法(包括带参数的和不带参数的),访问对应对象的域(Field). 从这里可以看到代码的详细解说:...

    java反射调用实例代码

    该资源包含了一个利用反射执行的一些操作,包含了动态执行构造方法,动态运行私有方法,为属性初始化等等,简单易懂。

    通过java类的路径实例化类并调用方法

    通过java类的路径实例化类并调用方法:仅仅知道类的路径,就可以实例化对象,利用反射机制调用其方法

    JAVA反射机制的入门代码

    代码为JAVA反射的一个DEMO,适合初学者临摹学习,还附有properties的创建方法,比较基础。

    Java常用的反射方法

    3.4 获取私有的变量(利用暴力反射) 4. 反射获取构造方法 4.1有参构造 4.2无参构造 4.3无参构造简便写法 5.反射获取成员方法 5.1无参方法 5.2 有参方法 5.3 获取所有方法(包含Object的方法)

    java反射实例学习

    很好的几个反射的例子,看后就明白什么是反射了,反射机制怎么用了

    java反射例子,封装了一个反射帮助类

    java反射例子,封装了一个反射帮助类,解压,加载到myeclipse上可用;java反射例子,封装了一个反射帮助类,解压,加载到myeclipse上可用;

    java 利用反射机制,获取实体所有属性和方法,并对属性赋值

    主要介绍了 java 利用反射机制,获取实体所有属性和方法,并对属性赋值的相关资料,需要的朋友可以参考下

    Java基础 反射篇.md

    Java基础 反射篇 - Java基础 反射篇 - 反射的思想及作用 - 反射的基本使用 - 获取类的 Class 对象 - 构造类的实例化对象 - 获取一个类的所有信息 - 获取类中的变量(Field) - 获取类中的方法(Method) - ...

    反射实例反射调用DLL里的方法

    利用反射 调用以生成的DLL里的方法. 一个简单的实例清楚现实反射DLL

    java JDK 实例开发宝典

    169个实例,内容涉及Java的语言基础、面向对象程序设计、数字处理、数组与集合、字符串、异常处理、文件操作、多线程、Swing编程、图形和多媒体编程、反射机制、网络程序设计、数据库编程、Applet、Java与XML、Java ...

    利用反射,根据类得完全限定名获得该类得实例

    利用反射技术,根据类的完全限定名获得该类的实例对象。包括无参数或带参数的实例化。感兴趣的可以看看!

    java由类的完整路径利用反射给接口注入对象

    java由类的完整路径利用反射给接口注入对象,本人亲测可用,完整实例。

    Java 自定义注解及利用反射读取注解的实例

    下面小编就为大家带来一篇Java 自定义注解及利用反射读取注解的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    java反射与代理实现AOP

    利用java中的反射机制以及代理机制,实现了AOP。有详细的代码和实例

    Java 用反射设置对象的属性值实例详解

    主要介绍了Java 用反射设置对象的属性值实例详解的相关资料,需要的朋友可以参考下

    JAVA 范例大全 光盘 资源

    实例203 用Servlet获取Web服务器信息 666 实例204 可选择的图形验证码 670 实例205 简单的页面注册 675 实例206 用Servlet实现分页查看数据库 686 实例207 简单的BBS论坛 697 第21章 Java程序综合案例:教务处...

    Java经典编程源码基础例程300.zip

    实例078 利用反射重写toString()方法 119 第8章 字符串与包装类 121 实例079 将数字格式化为货币字符串 122 实例080 货币金额大写格式 123 实例081 String类格式化当前日期 125 实例082 字符串大小写转换 1

    JAVA反射机制的简单理解

    有时候我们说某个语言具有很强的动态性,有时候我们会区分动态和静态的不同技术与作法。我们朗朗上口动态绑定(dynamic binding)、动态链接(dynamic ...是可以通过反射机制来实现“动态”,用一个实例来说明一下:

Global site tag (gtag.js) - Google Analytics