如代码所示,内部类也可是实现,却使用了内部接口@Singleton
public class ApplicationInfoManager {
private static final Logger logger = LoggerFactory.getLogger(ApplicationInfoManager.class); private static final InstanceStatusMapper NO_OP_MAPPER = new InstanceStatusMapper() {
@Override
public InstanceStatus map(InstanceStatus prev) {
return prev;
}
};
public static interface InstanceStatusMapper { InstanceStatus map(InstanceStatus prev);
}}
public class ApplicationInfoManager {
private static final Logger logger = LoggerFactory.getLogger(ApplicationInfoManager.class); private static final InstanceStatusMapper NO_OP_MAPPER = new InstanceStatusMapper() {
@Override
public InstanceStatus map(InstanceStatus prev) {
return prev;
}
};
public static interface InstanceStatusMapper { InstanceStatus map(InstanceStatus prev);
}}
解决方案 »
- 问大家一个struts1的一个问题
- jsp里小问题
- 请问FTPS上传下载应该如何配置以及开发?
- struts <html:select> 动态获得数据怎么会提交的时候有时出错
- hibernate异常:addEntity() or addScalar() must be called on a sql query before executing the query.
- 求wssecurity.jar和tsik.jar
- 求概率分布抽奖函数的方法
- easyUI 中下拉框无法显示
- struts下连接oracle数据库异常,如何配置?
- 急求::Tomcat5下配置数据库连接池问题??? thanks!!!!!!!!!!!
- compcode '2' ('MQCC_FAILED') reason '2009' ('MQRC_CONNECTION_BROKEN')
- ==和equals的区别? 不要这么官方,通俗一些,好理解一些
这只是一种编程思想,面向接口编程。
设计者是想方便以后扩展,现在只有一个NO_OP_MAPPER,以后如果还有一个YES_OP_MAPPER怎么办呢?直接重写这个方法就可以了,而不是去添加内部类中的方法。
private static final InstanceStatusMapper YES_OP_MAPPER = new InstanceStatusMapper() {
@Override
public InstanceStatus map(InstanceStatus prev) {
return new InstanceStatus(prev.getValue()+prev.getValue()); //假设可以这样使用
}
};
或者
private static final InstanceStatusMapper YES_OP_MAPPER = pre -> new InstanceStatus(prev.getValue()+prev.getValue());
如果你说要用抽象类代替接口的话,那差不多,不过抽象类比较繁琐,本来功能就多,java中能用简单的就用简单的比较好。不然也不会产生那么多看起来一模一样只是名字不一样的接口和类了。
如果你说要用抽象类代替接口的话,那差不多,不过抽象类比较繁琐,本来功能就多,java中能用简单的就用简单的比较好。不然也不会产生那么多看起来一模一样只是名字不一样的接口和类了。这样的话,还是接口的扩展性更好了,如果以后需要新的实例,只需重新实现接口内的方法就行,也就是改动的地方就是新加接口里方法的不同逻辑实现。。而如果是内部类的话,只能新建另外一个内部类来实现增加新的不同逻辑的示例。。我觉得代码改动量应该差不多。。但接口方式更符合java的思想,面向接口编程。。总之感觉最后还是:接口更符合java编程规范、思想。