android - Return 语句返回 null 而不是给定值

标签 android

我正在编写一个 Android 应用程序,遇到了一个非常奇怪的错误,我无法解决这个问题。在下面的代码中,变量“result”根据不同的条件填充了值。然后它应该被退回。在调试器中,可以看到结果的值设置正确。然而,当到达 return 语句时(根据调试器,此时结果具有正确的值)该方法确实返回 null 而不是结果中的值。我还尝试清理项目并在另一台机器上编译代码,结果相同。我无法想象这里出了什么问题,但在我看来,编译过程中出现了问题。

我在 Windows 10 机器上使用 64 位 jdk1.7.0_79,并在 Nexus 7 (2012) Emulator 和 Android Studio 版本 1.3.1 上运行代码

非常感谢您的提前帮助。

 private static WikiItemContainer getMappingForIntermediateThrowEvent(IntermediateThrowEvent intermediateThrowEvent, List<WikiItemContainer> eventContainers) {
    WikiItemContainer result = null;
    List<EventDefinition> eventDefinitions = intermediateThrowEvent.getEventDefinitions();
    if (eventDefinitions.isEmpty()) {
        result = new WikiItemContainer(eventContainers.get(0).getItems().get(1));
    } else if (eventDefinitions.size() > 1) {
        result = new WikiItemContainer(eventContainers.get(10).getItems().get(6));
    } else {
        EventDefinition definition = eventDefinitions.get(0);
        if (definition instanceof MessageEventDefinition) {
            result = new WikiItemContainer(eventContainers.get(1).getItems().get(6));
        } else if (definition instanceof EscalationEventDefinition) {
            result = new WikiItemContainer(eventContainers.get(3).getItems().get(4));
        } else if (definition instanceof LinkEventDefinition) {
            result = new WikiItemContainer(eventContainers.get(5).getItems().get(1));
        } else if (definition instanceof CompensateEventDefinition) {
            result = new WikiItemContainer(eventContainers.get(8).getItems().get(2));
        } else if (definition instanceof SignalEventDefinition) {
            result = new WikiItemContainer(eventContainers.get(9).getItems().get(6));
        }
    }
    return result;
}

最佳答案

有一种情况result为空:

 private static WikiItemContainer getMappingForIntermediateThrowEvent(IntermediateThrowEvent intermediateThrowEvent, List<WikiItemContainer> eventContainers) {
    WikiItemContainer result = null;
    List<EventDefinition> eventDefinitions = intermediateThrowEvent.getEventDefinitions();
    if (eventDefinitions.isEmpty()) {
        result = new WikiItemContainer(eventContainers.get(0).getItems().get(1));
    } else if (eventDefinitions.size() > 1) {
        result = new WikiItemContainer(eventContainers.get(10).getItems().get(6));
    } else {
        EventDefinition definition = eventDefinitions.get(0);
        if (definition instanceof MessageEventDefinition) {
            result = new WikiItemContainer(eventContainers.get(1).getItems().get(6));
        } else if (definition instanceof EscalationEventDefinition) {
            result = new WikiItemContainer(eventContainers.get(3).getItems().get(4));
        } else if (definition instanceof LinkEventDefinition) {
            result = new WikiItemContainer(eventContainers.get(5).getItems().get(1));
        } else if (definition instanceof CompensateEventDefinition) {
            result = new WikiItemContainer(eventContainers.get(8).getItems().get(2));
        } else if (definition instanceof SignalEventDefinition) {
            result = new WikiItemContainer(eventContainers.get(9).getItems().get(6));
        }


       // What value will result have here if none of the if statements above are entered?

    }
    return result;
}

关于android - Return 语句返回 null 而不是给定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32192195/

相关文章:

android - 在 android P 上 react Native

android - NFC Intent 在 onNewIntent 之前调用 onPause - 如何知道 onPause 调用的来源?

android - SQLiteDatabase close() 函数在多个线程时导致 NullPointerException

android, MediaScanner vs FileObserver 用于监控创建的媒体文件

android - 如何构建客户端 android 应用程序以扫描指纹形式的 morpho 扫描仪设备

android - android sqlite中的一对多关系

android - 如何在单个改造调用中解析不同的 xml 数据

Android 将 base64 字符串传递给另一个有 Intent 的 Activity

Android 屏幕截图和屏幕截图权限

java - Android listView 在 Fragment 中点击崩溃