java - 传递对方法的引用而不是值(或类似的东西) - JAVA
问题描述
我有多个对象的值存储在 -
object.getList().get(0).getSomeObject.getName(0)
有可能,该列表是空的,所以-
object.getList().get(0)
抛出 NPE
我想通过-
object.getList().get(0).getSomeObject.getName()
到另一个方法并在那里处理异常。
例如:
// calling the method
myMethod(object.getList().get(0).getSomeObject.getName());
public void myMethod(Object o){
try {
String name = o;
}catch (Exception e){
// do something
}
}
有没有可能做这样的事情 -
EvaluateLaterObject elo = new EvaluateLaterObject(object.getList().get(0).getSomeObject.getName());
myMethod(elo);
public void myMethod(EvaluateLaterObject elo){
try {
String name = elo.getValue();
}catch (Exception e){
// do something
}
}
先感谢您!
解决方案
您可以使用函数式接口,例如Supplier
lambda
myMethod(() -> object.getList().get(0).getSomeObject.getName());
public void myMethod(Supplier<String>){
try {
String name = elo.get();
}catch (Exception e){
// do something
}
}
如果要支持任何异常,则需要定义自己的功能接口,例如
@FunctionalInterface
interface ThrowableSupplier<T>
{
T get() throws Throwable;
}
推荐阅读
- c++ - C++ For Loop 在过程中被跳过。如何解决?
- shell - Rbenv 在尝试安装最新版本的 Ruby 时不起作用
- r - 面对 Shiny App 中 updateSelectInput 函数的问题
- java - 通过一个 JdbcTemplate 方法执行任何 sql?
- python - 比较Python中的数据框日期列值?
- python - 当带有 multiprossesing 的 python tkinter 打开 4 个新的 gui 时该怎么办
- c++ - 功能组的文档注释
- mule - 用于基于 REST GET API 的 id 进行重复数据删除的 Mulesoft 连接器
- r - 读取csv文件时如何指定文本列?
- c# - 是否有可能配置 Visual Studio 格式以忽略变量分配周围的空格