在 Java 中返回多个值的最佳实践?

2022-09-01 13:16:36

今天,我在登录表单后面添加了一个额外的安全检查,以减缓暴力攻击。我有多个登录表单,并制作了一个很好的易于调用的函数,该函数执行所有检查,然后返回结果。

public static ValidateLoginResult validateLogin(HttpServletRequest request, String email, String password) {

问题是结果不是单个值,结果包括:

boolean ok
String errorMessage
boolean displayCaptcha

为此,我创建了一个新类。这一切都很好。

但是我经常有方便的实用程序函数,它们返回多个值,并开始发现每次为结果创建一个新类有点烦人。

有没有更好的方法来返回多个值?还是我只是懒惰?:)


答案 1

不,这种结构在Java中并不存在,但是您可以查看JavaTuples库,它可能适合您的需求并提供一个非常优雅的解决方案。使用Triplet<Boolean, String, Boolean>


答案 2

不确定“最佳实践”,但务实的选择是返回一个 ?例如:Map<String, String>

myMap.put("result", "success");
myMap.put("usernameConfirmed", "bigTom");

return myMap;

可能面对一百万个OO原则,但我听说你想避免结果类的激增。

或者,您可以对存储对象使用类型检查并更严格地进行类型检查:字符串,布尔值,日期等。Map<String, Object>