首页 > 解决方案 > 传递对方法的引用而不是值(或类似的东西) - 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
    }
}

先感谢您!

标签: javamethodsparameter-passing

解决方案


您可以使用函数式接口,例如Supplierlambda

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;
}

推荐阅读