基于接口实现java动态代理示例_Java教程-查字典教程网
基于接口实现java动态代理示例
基于接口实现java动态代理示例
发布时间:2016-12-28 来源:查字典编辑
摘要:Subject.java复制代码代码如下:package_20140416_;importjava.util.List;publicinte...

Subject.java

复制代码 代码如下:

package _20140416_;

import java.util.List;

public interface Subject {

public String say(String name,int age);

public List<Person> getAllList(String name);

}

RealSubject.java

复制代码 代码如下:

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

复制代码 代码如下:

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

复制代码 代码如下:

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

复制代码 代码如下:

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);

}

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Java学习
    热门Java学习
    编程开发子分类