当我返回调用super.method()时,我的调试器显示一个值,该方法返回null

时间:2016-01-20 02:41:43

标签: java string null return

当我调用下面的方法时,它返回null。

public String determineAction(String someAction){
    if(someAction.length() > 4){
        return someAction;
    }else{
        return super.determineAction(someAction)
    }
 }

当我将return语句分解为String返回值

 String action = super.determineAction(someAction);
 return action;

返回值。

关心分享一些机制?我不记得在其他对象或原始数据类型中看到这种行为。

以下是超级方法

protected String determineAction(String someAction) {
        if(someAction!= null) {
            switch(someAction) {
                case ACCEPT: return ACTION_ACCEPT;
                case CANCEL: return ACTION_CANCEL;
                case UPDATE: return ACTION_UPDATE;
                case PASS: return ACTION_PASS;
                default: return null;
            }
        }
        return null;
    }

1 个答案:

答案 0 :(得分:0)

请参阅以下代码段。

父类

public class Father {
    protected String determineAction(String someAction) {
        if(someAction!= null) {
            switch(someAction) {
                case "abc": return someAction+someAction+someAction;
                case "ab": return someAction+someAction;
                default: return null;
            }
        }
        return null;
    }
}

儿童班

public class Son extends Father {

    public String determineAction(String someAction){
        if(someAction.length() > 4)
            return someAction;
        return super.determineAction(someAction);
     }

    public static void main(String[] args) {
        Son mySon = new Son();
        System.out.println(mySon.determineAction("abc"));   // prints abcabcabc // father determineAction()
        System.out.println(mySon.determineAction("a1234")); // prints a1234 // son determineAction()
    }
}