温馨提示:本文翻译自stackoverflow.com,查看原文请点击:java - List array of a static class returns always same values
arrays java list static

java - 静态类的列表数组始终返回相同的值

发布于 2020-03-31 23:49:50

我正在尝试填写数组的静态列表。RTTWifiPositionsToJavaUnity(C#)使用此函数传递每个WifiPosition的参数。但是列表中的每个项目都m_RTTWifiPositions具有与上次增加的值相同的值。
有人可以帮忙吗,谢谢:)

static class RTTWifiPos
{  
    static String strMacAddress;
    static double posX, posY, posZ;
    static double distance; 
    static double distanceDev;
}

static List<RTTWifiPos> m_RTTWifiPositions;

public static boolean RTTWifiPositionsToJava(int nIndex, String strMacAddress, double PosX, double PosY, double PosZ, double distance, double distanceStdDev)
{  
    if(nIndex == 0)
    {
       if(m_RTTWifiPositions != null)  
            m_RTTWifiPositions.clear();
       else
            m_RTTWifiPositions = new ArrayList<RTTWifiPos>();
    }
    RTTWifiPos rttpos = new RTTWifiPos();

    rttpos.strMacAddress = strMacAddress;
    rttpos.posX = PosX;
    rttpos.posY = PosY;
    rttpos.posZ = PosZ;
    rttpos.distance = distance;
    rttpos.distanceDev = distanceStdDev;

    m_RTTWifiPositions.add(rttpos);

    return true;
}

该函数RTTWifiPositionsToJava是从Unity3D调用的,如下所示:

for (nIndex = 0; nIndex < WifiRTTSignals.Count; nIndex++)
{
    result = m_pluginWifiRTTClass.CallStatic<bool>("RTTWifiPositionsToJava", nIndex, WifiRTTSignals[nIndex].macAddress, (double) WifiRTTSignals[nIndex].pos.x, (double) WifiRTTSignals[nIndex].pos.y, (double) WifiRTTSignals[nIndex].pos.z, (double) WifiRTTSignals[nIndex].distance, (double) 0f);
}

查看更多

提问者
NaScAR
被浏览
7
flaimme 2020-01-31 20:44

RTTWifiPos中的变量将始终是相同的,因为它们是静态的。静态变量将始终具有相同的值,而与对象的说明无关例:

static class RTTWifiPos
{  
    String strMacAddress;
    double posX, posY, posZ;
    double distance; 
    double distanceDev;
}

我也将它们设置为私有,并使用getter / setter方法代替,以实现更好的控制