【问题标题】:Pass method as param Android传递方法作为参数 Android
【发布时间】:2017-02-15 00:51:02
【问题描述】:

大家好,我正在尝试创建一个函数,在调用函数之前检查对象的 null。

-如果它不为空,则调用该方法,否则它什么也不做。

例子:

private Object object;

private void doSomething(){
    object().function();

    //or

    object(function())
}

public void object(){
    if(object != null){
        //in this case we would call 'function()'
    }
}

这样的事情可能吗? 我不希望在 object().function(); 上出现空指针异常,例如 object() 返回 null Object

【问题讨论】:

  • 是否可以“传递函数”:否。您在这里尝试做的事情是否有必要:否。

标签: java android function null


【解决方案1】:

如果对象为空,这将崩溃:

object.function();

做经典的方式:

if object!=null

object.function();

【讨论】:

    【解决方案2】:

    如果对象在你的对象方法中为空,你可以像这样初始化你的对象。

    public Object object(){
        if(object != null){
            //in this case we would call 'function()'
            return object;
        }
       else{
         //initialize your object here and return it 
        }
    }
    

    【讨论】:

    • 最好不要返回else中的初始化对象,而是将其称为function()
    【解决方案3】:

    不,您不能将函数引用作为参数传递,但您可以像这样传递Runnable 对象:

    private Object object;
    
    private void doSomething(){
        Runnable functionRunnable = new Runnable() {
            public void run(){
                object.function();
            }
        };
    
        object(functionRunnable);
    }
    
    public void object(Runnable action){
        if(object != null){
            action.run();
        }
    }
    

    但在这种情况下,您不必这样做。您可以在doSomething 方法中检查对象是否为空,如果不是,则调用它:

    if(object != null) object.function();
    

    【讨论】:

      猜你喜欢
      • 2010-11-16
      • 2014-04-09
      • 2022-01-22
      • 2015-08-19
      • 2018-09-03
      • 2018-09-09
      • 2014-04-22
      • 2019-02-22
      相关资源
      最近更新 更多