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中有一个通知.)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值