同时链接多个方法调用?提供的例子

时间:2019-02-24 15:13:43

标签: java android if-statement methods sharedpreferences

简而言之,我有一个if语句,它具有多个不同的结果,但是有很多共同的代码。
我想确保以下代码是完成我要尝试的操作的正确方法
(例如:链接方法调用,如图所示)。对吗?

SharedPreferences getPrefs =
    PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

final String notifType = getPrefs.getString
    (PREF_NOTIFICATION_TYPE, NOTIFICATION_TYPE_SOUND_AND_VIBRATION);

if (notifType != null && notifType.equals
    (NOTIFICATION_TYPE_SOUND_AND_VIBRATION)) {
        // Call the appropriate Methods, depending on the Preference..
        notificationVibration();
        playNotificationTone();
        showReminderNotification();

} else if (notifType !=null && notifType.equals
    (NOTIFIATION_TYPE_VIBRATION_ONLY)) {
        // Calling alot of the same code, but minus the Sound..
        notificationVibration();
        showReminderNotification();

} else if (notifType !=null && notifType.equals
    (NOTIFIATION_TYPE_SILENT_REMINDER)) {
        // Again re-using common code..
        showReminderNotification(); 
}

public void notificationVibration() {
    // Vibration code here
}

public void playNotificationTone() {
    // Sound code here
}

public void showReminderNotification() {
    // Notification code here
}

SO -这是解决此问题的正确方法吗?
我可以链接方法调用(如图所示)并使它们同时触发吗?
如果没有,正确执行 的正确方法是什么?
反馈非常感谢!谢谢。

2 个答案:

答案 0 :(得分:1)

您可以在if内使用switch块:

if (notifType != null) {
    switch(notifType) {
        case NOTIFICATION_TYPE_SOUND_AND_VIBRATION:
            ....
        break;
        case NOTIFIATION_TYPE_VIBRATION_ONLY:
            ....
        break;
        case NOTIFIATION_TYPE_SILENT_REMINDER:
            ....
    }
}

您还可以使用多个if语句代替switch。使用可使代码更有效的唯一方法是一次使用if (notifType != null)

答案 1 :(得分:0)

假设代码本身在方法内部,则可以执行以下操作。

private void methodName() {

    if (notifType != null) 
        return

    switch(notifType) {
        case NOTIFICATION_TYPE_SOUND_AND_VIBRATION:
            ....
        break;
        case NOTIFIATION_TYPE_VIBRATION_ONLY:
            ....
        break;
        case NOTIFIATION_TYPE_SILENT_REMINDER:
            ....
    }
}