JAVA接口返回面积_java – 将接口的返回值限制为实现类的范围
我正在编写一个小型库,我有一些接口提供了一个返回值应该在指定范围内的方法.我如何明确禁止实现此方法的库的用户返回不在此范围内的值?
像这样的东西:
//Library
interface FavoriteNumber {
//returned value must lie between 0 and 10
double whatsYourFavoriteNumberBetweenZeroAndTen();
}
...
//Classes implemented by user of library
class ILikePi implements FavoriteNumber {
@Override
public double whatsYourFavoriteNumberBetweenZeroAndTen() {
return 3.141; //Should be allowed
}
}
...
class AnswerToLifeTheUniverseAndEverything implements FavoriteNumber {
@Override
public double whatsYourFavoriteNumberBetweenZeroAndTen() {
return 42; //Should be forbidden
}
}
我想我可以写点什么
class DoubleBetweenZeroAndTen {
private final double value;
DoubleBetweenZeroAndTen(double value) {
if (value < 0 || value > 10) {
throw new IllegalArgumentException("value must be between 0 and 10");
}
this.value = value;
}
double toDouble() {
return this.value;
}
}
并返回此而不是double,但这感觉不够好,因为它是一个0到10之间的双重,你想要在此之后使用,而不是DoubleBetweenZeroAndTen.
如果不能明确禁止这一点,那么确保用户不会违反它的最佳方法是什么? (现在,我在javadoc中有一个通知.)
最佳答案 您不能明确禁止实现您的接口的人从whatsYourFavoriteNumberBetweenZeroAndTen()方法返回任何double值.
您只能在接口的Javadoc中定义返回值的预期范围,作为接口定义的协定的一部分.假设您的库具有使用该接口的实现的类,如果该方法返回违反您所声明的合同的值,则这些类可能会抛出异常.
这是JDK中的标准做法 – 例如,Comparator的compare()方法的契约定义了所有实现的预期行为,而不遵循契约可能导致使用接口实现的JDK类中的异常或意外结果(例如Collections.sort(List< T> list,Comparator c),如果发现比较器违反了Comparator合同,其Javadoc声明它可能抛出IllegalArgumentException(可选).
JAVA接口返回面积_java – 将接口的返回值限制为实现类的范围相关推荐
- java 接口 this参数_Java BiFunction 接口实例
原标题:Java BiFunction 接口实例 www.baeldung.com/java-bifunction-interface 1. 简介 Java8 引入了函数式编程,可以把函数作为参数传入 ...
- java接口源码_java collection接口源码
package java.util; /* * 1.Collection接口是集合继承关系中的根接口(root interface),有些集合允许重复元素, * 有些集合有序,JDK不提供本接口的实现 ...
- java 接口防刷_java轻量级接口限流/防刷插件
简介 call-limit提供接口限流.防刷的功能,插件基于spring开发,在应用应用的任何一个逻辑层皆可使用(web.service.dao), 插件支持单机应用下的限流和分布式应用的限流(分布式 ...
- java8接口写静态方法_Java 8接口更改–静态方法,默认方法
java8接口写静态方法 Java 8 interface changes include static methods and default methods in interfaces. Prio ...
- java返回泛型_Java泛型从泛型方法返回持有者对象
在下面的: public interface SomeInteface { public B doSomething(A a); } 我想实现一个版本,其中方法doSomething将参数返回回来. ...
- java继承求三角形圆形面积_java用接口、多态、继承、类计算三角形和矩形周长及面积的方法...
本文实例讲述了java用接口.多态.继承.类计算三角形和矩形周长及面积的方法.分享给大家供大家参考.具体如下: 定义接口规范: /** * @author vvv * @date 2013-8-10 ...
- java短信接口源码_java免费短信接口开发源码
java免费短信接口开发源码 更多 作者:捷信通来源:www.jiexintong.cn日期:2014-07-30 17:08:51 微宏捷信通短信接口提供适应C#.Java..NET等多种主流开发语 ...
- java类引用接口的注释_java – 在接口类型上使用注释有什么好处?
在这个 example中,注释类型(@interface)下面: @interface ClassPreamble { String author(); String date(); int curr ...
- java 继承和内部类_Java自学-接口与继承 内部类
Java 内部类 内部类分为四种: 非静态内部类 静态内部类 匿名类 本地类 步骤 1 : 非静态内部类 非静态内部类 BattleScore "战斗成绩" 非静态内部类可以直接 ...
最新文章
- hive币涨幅空间大吗_空间大、油耗低,家用MPV领域的三款全能好车,你心动了吗?...
- Android应用程序消息处理机制(Looper、Handler)分析(1)
- JavaScript正则替换去除字符串中特殊字符
- Your shell has not been properly configured to use 'conda activate'
- python 线程异步执行踩坑
- 作者:周涛,博士,北京启明星辰信息安全技术有限公司教授级高工。
- java定义类和测试类时的三种方式
- 一个类月光宝盒应用,把手机,电视,盒子变家庭游戏机(FBA,FBNEO,MAME)
- 使用 NGINX 搭建 RTMP 流媒体服务器实现直播功能
- arcgis 实验教程--ModelBuilder与空间建模
- STM32 USART串口发送软件调试
- Matlab中的冲激函数
- 视频网站主机服务器,视频网站主机服务器
- Html5学习------canvas绘制径向渐变图形
- IDEA自动导包设置,敲代码直接起飞
- 仿pinterest实现瀑布流布局效果
- 转子 matlab,转子系统matlab特征值
- 量化与码农 | 劝入vs劝退
- 摄像头畸变及厂家畸变表分析
- FRM-30425: Summarized database item must reside in a block with Query All Records or Precompute Summ
热门文章
- 换一种方式编写 Spring MVC 接口
- 了解Java中的内存泄漏
- android studio 优化提速方法,Android Studio速度慢(如何加速)?
- 百度飞浆行人多目标跟踪笔记
- OpenCV-Python 雪花飘落特效
- c++ 导入caffe
- AttributeError: module ‘matplotlib’ has no attribute ‘artist’
- linux下安装boost
- nvcc fatal : A single input file is required for a non-link phase when an outputfile is specified
- Python 动态生成多维数组