源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

基于接口实现java动态代理示例

  • 时间:2020-11-30 06:45 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:基于接口实现java动态代理示例
Subject.java
[u]复制代码[/u] 代码如下:
package _20140416_; import java.util.List; public interface Subject {    public String say(String name,int age);    public List<Person> getAllList(String name); }
RealSubject.java
[u]复制代码[/u] 代码如下:
package _20140416_; import java.util.ArrayList; import java.util.List; public class RealSubject implements Subject {  private String name;  public RealSubject(String name) {   this.name = name;  }  public String getName() {   return name;  }  public void setName(String name) {   this.name = name;  }  @Override  public String say(String name, int age) {   return "名字:" + name + "_年龄:" + age;  }  @Override  public List<Person> getAllList(String name) {   List<Person> list = new ArrayList<Person>();   list.add(new Person("A", 20));   list.add(new Person("B", 20));   list.add(new Person("C", 20));   list.add(new Person("D", 20));   System.out.println(name);   return list;  }  @Override  public int hashCode() {   return 10010;  }  @Override  public boolean equals(Object obj) {   if(obj instanceof RealSubject){    RealSubject real = (RealSubject)obj;    System.out.println("getName():"+real.getName());    System.out.println("this.name:"+this.name);    if(real.getName()==this.name){      System.out.println("相同");    }else{     System.out.println("不相同");    }   }   return true;  } }
MyInvercationHander.java
[u]复制代码[/u] 代码如下:
package _20140416_; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class MyInvercationHander implements InvocationHandler{  private Object obj;  public Object bind(Object obj){   this.obj=obj;   return Proxy.newProxyInstance(obj.getClass().getClassLoader(),obj.getClass().getInterfaces(),this);  }  @Override  public Object invoke(Object proxy, Method method, Object[] args)    throws Throwable {   Object temp = method.invoke(this.obj, args);   //这里做切面操作 比如我要加功能   System.out.println("方法之前!");   return temp;  } }
Person.java
[u]复制代码[/u] 代码如下:
package _20140416_; public class Person {  private String name;  private int age;  public String getName() {   return name;  }  public void setName(String name) {   this.name = name;  }  public int getAge() {   return age;  }  public void setAge(int age) {   this.age = age;  }  public Person(String name, int age) {   super();   this.name = name;   this.age = age;  } }
MainTest.java
[u]复制代码[/u] 代码如下:
package _20140416_; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class MainTest {  public static void main(String[] args) {       Subject subject = (Subject) new MyInvercationHander().bind(new RealSubject("中国"));       System.out.println(subject.say("莫建锋",22));       System.out.println(subject.getAllList("张三"));       Map<String,Integer> myMap = new HashMap<String, Integer>();       myMap.put("A",1);       myMap.put("B",2);       myMap.put("C",3);       myMap.put("D",4);       myMap.put("E",5);       Set<Map.Entry<String,Integer>> myEntrySet = myMap.entrySet();       Iterator<Map.Entry<String,Integer>> it = myEntrySet.iterator();       while(it.hasNext()){        Map.Entry<String,Integer> entry = it.next();        System.out.print(entry.getKey()+":");        System.out.println(entry.getValue());       }       System.out.println(new RealSubject("中国").hashCode());       System.out.println(new RealSubject("中国").equals(new RealSubject("中dd国")));       String info = new String("1");       String info1 = new String("1");       System.out.println(new Integer('1'));       System.out.println(info.hashCode());       System.out.println(info1.hashCode());       System.out.println(info==info1);       System.out.println(info.equals(info1));       short i = 1;       System.out.println(i);  } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部