Java之 接口做爲參數傳遞

簡述

Java裏的方法參數能夠使用接口,實際在使用時能夠將實現了接口的類傳遞給方法,也能夠new一個接口進行傳遞,在接口的實現類裏進行相關的業務實現, 
這在實際開發裏不少場景會遇到。再看看下面的例子,但願對各位同窗有幫助!app

示例代碼

接口ide

  1. 有返回值的模版Action接口spa

public interface JedisAction<T> {
       T action(Jedis jedis);
}
  1. 沒有返回值的模版Action接口code

public interface JedisActionNoResult {
       void action(Jedis jedis);
}

方法orm

  1. 有返回結果的執行方法接口

public <T> T execute(JedisAction<T> jedisAction) throws JedisException {
       Jedis jedis = null;
       boolean broken = false;
       try {
           jedis = jedisPool.getResource();//從jedis鏈接池裏獲取鏈接
           return jedisAction.action(jedis);
       } catch (JedisException e) {
           broken = handleJedisException(e);//出現異常,鏈接歸還鏈接池
           throw e;
       } finally {
           closeResource(jedis, broken);//釋放資源
       }
   }
  1. 沒有返回結果的執行方法ci

public void execute(JedisActionNoResult jedisAction) throws JedisException {
       Jedis jedis = null;
       boolean broken = false;
       try {
           jedis = jedisPool.getResource();//從jedis鏈接池裏獲取鏈接資源
           jedisAction.action(jedis);
       } catch (JedisException e) {
           broken = handleJedisException(e);//出現異常,鏈接歸還鏈接池
           throw e;
       } finally {
           closeResource(jedis, broken);//釋放資源
       }
   }

執行資源

  1. 無需返回值的方法執行,用基於jedis的set舉例開發

/**
* 將字符串值 value 關聯到 key
*  若是 key 已經持有其餘值, SET 就覆寫舊值,無視類型
* ps:value雖然能夠放入最多不超過1GB的字符串。但仍是存入的越短越好
*/

public void set(final String key, final String value) {
   execute(new JedisActionNoResult() {//這裏new了一個不須要結果的接口類
       @Override
       public void action(Jedis jedis) {
           jedis.set(key, value);
       }
   });
}
  1. 有返回值的方法執行,用基於jedis的get舉例字符串

/**
* 根據key得到string類型的value
* /
public String get(final String key) {
   return execute(new JedisAction<String>() {//這裏new了一個須要結果的接口類
       @Override
       public String action(Jedis jedis) {
           return jedis.get(key);        }    });}
相關文章
相關標籤/搜索