java 参数不允许null_Java 中, 是否有方法, 强制某 method 不接受 null 类型参数 ?

好问题,平时只关注怎么实现功能,却没怎么想过为什么Java不这样去实现,例如此问题。也勾起了我很多天马行空的想象,如果Java语法支持该多好啊,开发效率至少高几倍吧,不过再想想好像有点不对劲吧。

NullPointerException是运行时异常是有一定道理的

假设Java支持这样的语法,使用注解:@NotNull标识参数不为空

一个这样场景:用户登录成功后,更新用户的登录时间和ip。

用户数据有:

name

password

lasttime

ip

aaa

123456

2017-01-09

192.168.1.1

bbb

123456

2017-01-08

192.168.1.1

更新用户信息伪代码:

public void updateAccount(@NotNull Account account) {

// 因为肯定不为空,可以放心大胆的更新Account的最新登录时间、ip

}

@NotNull表示参数:account不能为空,这里没什么问题。

获取用户信息验证登录伪代码:

public Account login(String name) {

// 1、连接数据库

// 2、根据用户名获取Account

// 3、验证用户信息

// 4、验证成功返回Account信息,验证失败返回null

}

我们只是参数不能为空,并不让返回值不为空,这样也没什么问题。

主逻辑判断伪代码:

public static void main(String[] args) {

AccountService service = new AccountService();

// aaa登录

Account account = service.login("aaa","123456");

service.updateAccount(account);

// bbb登录

Account account = service.login("bbb","123456");

service.updateAccount(account);

// ccc登录

Account account = service.login("ccc","123456");

service.updateAccount(account);

}

那么问题来了,account参数到底能不能传入service.updateAccount()方法,编译能不能通过?从数据库中读取的Accoount对象本来就是个模凌两可对象,有可能代表某个人,也有可能是null。

那就把返回值也变成不为空的?

是的,可以这样,这就变成了一种模式叫空对象设计模式(NullObject Pattern),意思就是建立一个专用的空对象,以此来代表结果为空。

详细请查阅:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值