您的位置 首页 java

Java实用技能 之 接口作为参数传递

文章乃原创,转载请标注

简述

Java里的方法参数可以使用接口,实际在使用时可以将实现了接口的类传递给方法,也可以new一个接口进行传递,在接口的实现类里进行相关的业务实现,

这在实际开发里很多场景会遇到。再看看下面的例子,希望对各位同学有帮助!

示例代码

接口

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

 public interface JedisAction<T> { 

T action(Jedis jedis);

}

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

 public interface JedisActionNoResult { 

void action(Jedis jedis);

}

方法

  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. 没有返回结果的执行方法

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

}

});

}

完毕,希望对大家有帮助!

文章来源:智云一二三科技

文章标题:Java实用技能 之 接口作为参数传递

文章地址:https://www.zhihuclub.com/177660.shtml

关于作者: 智云科技

热门文章

网站地图