java - 方法执行不正确

标签 java

我的 Util 类中有一个方法曾经可以工作,但由于某种原因它无法工作。我是类访问的所有变量都是静态的并且位于同一个类中,但是打印出来是错误的。如果问题简单的话我的问题就可以简单地回答

public static List<Integer> superMaleList = new ArrayList<>();
int REDO_LISTS = 2;

public static void runRefresh(int runcode)
{

    if (runcode == REDO_LISTS)
    {
        Log.i("RUN REFRESH", " " + superMaleList.size()); //Prints out correct size

        refresh(runcode, superMaleList);
    }
}

public static void refresh(int runcode, List maleList)
{
    Log.i("RUN REFRESH", ""+ maleList.size()); //prints incorrectly
}

这些方法在另一个类中静态访问。我可以添加到列表中并从其他类中的列表中读取,但是当我将列表变量传递给这些方法时,它们无法正确打印。为什么?

更新

我使用这些方法的方式如下(这是在线程中静态执行的)

EventUtils.superMaleList.add(2);
EventUtils.runRefresh(2);

最佳答案

可能性:

  1. 在多线程环境中,您可能会在另一个线程上从 superMaleList 中删除元素、在列表上调用 clear() 或重新初始化superMaleList 到一个新的列表对象。您可以通过将 superMaleList 设置为 final 变量来防止最后一个条件(重新初始化)。

  2. 多个 class loaders可能会产生多个 superMaleList。尝试将您的应用程序配置为使用单个类加载器,看看这是否会产生影响。

关于java - 方法执行不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27775669/

相关文章:

java - 来自 :text nested in th:action in thymeleaf 的值

java - JAXB - 枚举注释允许获取值,因为 int 和 string 都会导致异常

Java 日志接口(interface)

java - Textview 不显示在 FrameLayout 中

java - 如何迭代bean/对象中的所有属性/字段,包括引用对象/Bean

java - 在 Eclipse 中为 Java EE 开发人员版禁用 HTML 警告

java - 了解 Java 的基础知识,学习 Groovy 的正确方法是什么?

java - "Object"对象类型转换和对 "Some"类对象的引用

java - Spring/Hibernate - 实体被隐式持久化

netbeans 中的 Java 程序无法正常运行,但在调试时工作得很好