`

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反射经典实例”中,我们将深入探讨这个主题,了解如何利用反射来访问和修改私有属性以及调用私有方法。 1. **反射的概念与用途** - 反射机制是在运行时分析类的能力,它允许我们获取类的信息(如类名、...

    java 利用反射获取内部类静态成员变量的值操作.docx

    ### Java 利用反射获取内部类静态成员变量的值操作 #### 一、引言 在Java编程中,反射是一个非常强大的工具,它允许程序在运行时检查类、接口、字段和方法的信息,并且能够创建和操作对象。本文将详细介绍如何使用...

    Java反射经典实例

    2. ORM框架:如Hibernate、MyBatis等,利用反射将数据库中的数据映射为Java对象,反之亦然。 3. Spring框架:Spring的依赖注入(DI)和组件扫描功能,部分基于反射实现。 4. 测试工具:JUnit等测试框架使用反射来...

    java反射实例代码

    在提供的"java反射实例代码"中,应该包含了如何使用上述方法的实际示例,这些示例有助于加深对Java反射机制的理解。通过阅读和运行这些代码,开发者可以更直观地学习如何在程序运行时动态地操作类、方法和字段,从而...

    Java反射应用实例

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

    Java 反射机制 代码的实例

    Java反射机制是Java编程语言中的一个强大特性,它允许程序在运行时检查和操作类、接口、对象等的内部结构。通过反射,开发者可以动态地获取类的信息并调用其方法,创建对象,访问私有成员,甚至改变类的行为。在深入...

    反射实例-JAVA反射机制

    ### 反射实例—JAVA反射机制 #### 一、反射概念及原理 反射在计算机科学领域,特别是程序设计中,是指程序有能力访问、检测和修改其自身的结构和行为。这一概念最早由Smith于1982年提出,并迅速应用于各种编程语言...

    Java反射动态加载实例类

    通过本示例,我们不仅理解了Java反射的基本概念和用途,还学会了如何利用反射动态加载并操作实例类。反射提供了一种灵活的方式来处理类和对象,尤其是在编写框架和插件系统时,能够根据运行时的条件动态地加载和执行...

    java 反射实例,大量注释,简单易懂

    以下是对"java 反射实例,大量注释,简单易懂"这个主题的详细解释: 1. **反射基础**: - Java反射API主要由`java.lang.reflect`包提供,包括`Class`,`Constructor`,`Method`和`Field`等类。 - `Class`类代表...

    java 反射得到某个方法

    在本文中,我们将深入探讨如何使用Java反射来获取并执行某个特定的方法。 首先,我们需要了解Java反射的基本概念。`java.lang.Class`类是反射的核心,它代表了Java中的每一个类。我们可以通过以下方式获取到一个...

    Java方法反射调用demo

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有了高度的灵活性,常用于框架开发、插件系统、元编程等...

    在Java中使用反射API的一个实例

    下面我们将深入探讨如何利用Java反射API实现这些功能。 首先,要使用反射API,我们需要导入`java.lang.reflect`包中的几个关键类:`Class`、`Constructor`、`Method`和`Field`。这些类分别代表类对象、构造器对象、...

    java反射 java反射 java反射java反射

    Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...

    JAVA反射机制的入门代码

    Java反射机制是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。这个特性使得Java具有了高度的灵活性和动态性,尤其是在处理元数据、创建对象、调用私有方法...

    java反射应用实例

    在标题“Java反射应用实例”中,我们关注的是如何在实际项目中利用反射来实现特定的功能。这篇博客文章(可以通过链接访问)可能会探讨以下几个方面: 1. **什么是反射**:首先,我们需要理解反射的基本概念。反射...

    反射获取Context的实例

    本文将深入探讨如何通过反射获取`Context`的实例,并展示如何利用反射实现一个集成`Toast`的工具类。这在某些场景下非常有用,比如当我们需要在没有直接访问`Context`的情况下显示`Toast`消息。 首先,让我们了解`...

    java反射实例

    在标题“Java反射实例”中,我们聚焦于如何在实际编程中应用这一特性。通过反射,我们可以动态地获取类的信息,如类名、方法名、字段名,甚至可以在运行时创建和调用对象。这对于实现元编程、插件系统、序列化、单元...

    Java反射实例

    以下是对"Java反射实例"的详细解释: 1. **获取Class对象** 要使用反射,首先需要获取到对应的`Class`对象。这可以通过以下三种方式实现: - 使用`Class.forName()`方法,传入类的全名(包括包名)。 - 对象的`...

    java反射大讲堂 实例源码下载

    在"java反射大讲堂 实例源码下载"中,我们将会探讨如何利用Java反射机制来实现对类的深入理解和动态操控。 首先,我们要了解什么是类的继承关系。在面向对象编程中,继承是类之间的一种层次结构,一个类可以继承另...

Global site tag (gtag.js) - Google Analytics