欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于接口實現(xiàn)java動態(tài)代理示例

 更新時間:2014年04月22日 09:30:28   作者:  
這篇文章主要介紹了基于接口實現(xiàn)java動態(tài)代理示例,需要的朋友可以參考下

Subject.java

復(fù)制代碼 代碼如下:

package _20140416_;

import java.util.List;

public interface Subject {
   public String say(String name,int age);
   public List<Person> getAllList(String name);
}

RealSubject.java

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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

相關(guān)文章

  • Java利用序列化實現(xiàn)對象深度clone的方法

    Java利用序列化實現(xiàn)對象深度clone的方法

    這篇文章主要介紹了Java利用序列化實現(xiàn)對象深度clone的方法,實例分析了java序列化及對象克隆的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • SpringBoot項目在啟動后自動關(guān)閉的實現(xiàn)

    SpringBoot項目在啟動后自動關(guān)閉的實現(xiàn)

    我們在寫spring?boot?web項目時,有時會遇到啟動后立即關(guān)閉的情況,?本文主要介紹了SpringBoot項目在啟動后自動關(guān)閉的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • Java?SM2加密相關(guān)實現(xiàn)與簡單原理詳解

    Java?SM2加密相關(guān)實現(xiàn)與簡單原理詳解

    SM2算法可以用較少的計算能力提供比RSA算法更高的安全強(qiáng)度,而所需的密鑰長度卻遠(yuǎn)比RSA算法低,這篇文章主要給大家介紹了關(guān)于Java?SM2加密相關(guān)實現(xiàn)與簡單原理的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Mybatis-plus的selectPage()分頁查詢不生效問題解決

    Mybatis-plus的selectPage()分頁查詢不生效問題解決

    本文主要介紹了Mybatis-plus的selectPage()分頁查詢不生效問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 詳解時間輪TimeWheel的工作原理

    詳解時間輪TimeWheel的工作原理

    時間輪(TimeWheel)作為一種高效率的計時器實現(xiàn)方案,在1987年發(fā)表的論文Hashed?and?Hierarchical?Timing?Wheels中被首次提出。本文主要來聊聊它的工作原理,感興趣的可以了解一下
    2023-02-02
  • Java的設(shè)計模式之代理模式使用詳解

    Java的設(shè)計模式之代理模式使用詳解

    這篇文章主要介紹了Java的設(shè)計模式之代理模式使用詳解,代理模式是23種設(shè)計模式之一,它關(guān)心的主要是過程,而不是結(jié)果,代理模式主要提供了對目標(biāo)對象的間接訪問方式,即通過代理對象來訪問目標(biāo)對象,需要的朋友可以參考下
    2024-01-01
  • 深入解析Java編程中final關(guān)鍵字的作用

    深入解析Java編程中final關(guān)鍵字的作用

    final關(guān)鍵字正如其字面意思一樣,意味著最后,比如被final修飾后類不能集成、變量不能被再賦值等,以下我們就來深入解析Java編程中final關(guān)鍵字的作用:
    2016-06-06
  • Springboot單元測試無法讀取配置文件的解決方案

    Springboot單元測試無法讀取配置文件的解決方案

    這篇文章主要介紹了Springboot單元測試無法讀取配置文件的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java多線程編程之管道通信詳解

    java多線程編程之管道通信詳解

    這篇文章主要為大家詳細(xì)介紹了java多線程編程之線程間的通信,探討使用管道進(jìn)行通信,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Java?Servlet響應(yīng)httpServletResponse過程詳解

    Java?Servlet響應(yīng)httpServletResponse過程詳解

    HttpServletResponse是處理http響應(yīng)的對象,調(diào)用該對象的方法,設(shè)置到對象屬性的內(nèi)容,tomcat最終會組織為http響應(yīng)報文
    2022-02-02

最新評論