当前位置: 首页 > 知识库问答 >
问题:

如何在java中使用可选对象的参数调用方法

惠志
2023-03-14

让我们考虑一下下面的课程

class A{
    void met(int i){
       //do somthing
    }
}

让我们考虑一下这个类有一个可选对象,比如:

Optional<A> a;

是否可以在对象a上调用方法met,而无需检查a是指完整的对象还是仅指空的对象(null)。比如:

a.map(A::met(5));

不幸的是,这段代码无法编译。如何做到这一点?

共有1个答案

鲜于谦
2023-03-14

有两个原因导致这无法工作:

a.map(A::met(5));
  1. met不返回任何内容,map必须将输入的可选的映射到输出的可选的

你需要的是:

a.ifPresent(x->x.met(5));

另一种选择:

a.orElse(new A()).met(5);

如果a为空,这将在虚拟实例上执行met(5),因此这可能不是最好的方法。

 类似资料:
  • 问题内容: 我正在尝试使用java反射调用带有可变参数的方法。这是托管方法的类: 这是调用代码: 我在调用invoke的最后一行以“错误数量的参数” 的形式获取IllegalArgumentException 。不知道我在做什么 错。 任何指针将不胜感激。 谢谢 问题答案: public class Test { 为我工作。 将您的N []投射到对象 在实例上调用,而不在类上调用

  • 本文向大家介绍在Java中使用反射调用对象的方法,包括了在Java中使用反射调用对象的方法的使用技巧和注意事项,需要的朋友参考一下 可以使用java.lang.Class.getDeclaredMethods()方法调用对象的方法。此方法返回一个数组,其中包含具有公共,私有,受保护和默认访问权限的所有Method对象。但是,不包括继承的方法。 另外,如果类或接口没有方法,或者在Class对象中表示

  • 我已经通读了文档,但这似乎对我不起作用。我跟踪了这个医生。但我不确定这是否与我要做的事情有关,我认为这个文档是用于传递这样的查询- 这是我的目标:api.site.com/test/(optional_field) 因此,如果有人转到“测试”endpoint,它会将可选字段默认为一个参数,但如果他们在那里添加一些内容,它会将其作为输入。 也就是说,这是我的代码: 我想做的是,如果他们只是在没有可选

  • 问题内容: 我正在扩展一个类并覆盖一个方法。我要做的只是调用super,但是调用了一个经过修改的参数,该参数被其方法之一拦截。一个例子使它更加清楚: 我宁愿使用不需要自己的编译器的工具。最佳选择是什么? 问题答案: 鉴于这是一个接口,您可以考虑使用动态代理,该代理将: 包装原始foo 拦截所有消息并将其转发给原始foo 上面的链接中有一个完整的示例。这只是想法: 请注意,如果不是接口,您仍可以手动

  • 我在类中有一个签名为的方法。 我有一个调用方法的代码块: 如果我想测试databaseService.save(user)没有被调用,那么我如何用Mockito(3.3.3版)来做呢?

  • 我已经设置了ModelAndView对象 然后,我在JSP中导入了其他助手 然后我尝试使用文档字段作为如下参数 IDEA告诉我那个文件没有解决 堆栈跟踪 在jsp文件中的[44]行发生错误:[/WEB-INF/view/jsp/admin/document_card.jsp]document.pub_date无法解析为类型41: РћРїСѓР±Р"икование 42: 43: