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);        }    });}
相关文章
相关标签/搜索