方法执行不正确

超级用户

我的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
}

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

更新

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

EventUtils.superMaleList.add(2);
EventUtils.runRefresh(2);
格尼克尔

可能性:

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

  2. 多个类加载器可能会导致多个superMaleList。尝试将您的应用程序配置为使用单个ClassLoader,以查看是否有区别。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章