[Java] 跨类赋值后数值未改变

[Java] 跨类赋值后数值未改变,第1张

[Java] 跨类赋值后数值未改变 Java 跨类赋值后数值未改变

在Android中使用SurfaceView编写游戏的地图功能时,使用了两个 int类型的值 来存储地图的相对数值。


解决方法: 设为status变量
	public status int mapX;
	public status int mapY;



情景再现:

地图类如下:

public class MapController{
	public int mapX = 0;
	public int mapY = 0;

	public int getMapX(){        
        return mapX;
    }
    public int getMapY(){
    	System.out.println(1+"——"+mapController.getMapX());
        return mapY;
    }

    public void setMapX(int num){
    	System.out.println(2+"——"+mapController.getMapX());
        mapX = num;
    }
    public void setMapY(int num){
        mapY = num;
    }
}

控制类如下:

public class JoyController{
	int hubMapX = 1,hubMapY = 1;
	public JoyController(){
	    mapController.setMapX(hubMapX);
        mapController.setMapY(hubMapY);
        System.out.println(3+"——"+mapController.getMapX());
	}
}

调用类如下:

public class MoveByMap{
	MapController mapController;
	public MoveByMap(){
		mapController = new MapController();
		System.out.println(4+"——"+mapController.getMapX());
	}
}



1、在控制类中改变地图类里的mapX和mapY的值;
2、在调用类中调用地图类李的mapX和mapY的值;

最后发现:

调用类中的4+"——"得到的mapController.getMapX();的值为0
地图类中的1+"——"得到的mapController.getMapX();的值为0

地图类中的2+"——"得到的mapController.getMapX();的值为1
控制类中的3+"——"得到的mapController.getMapX();的值为1




为此,只要将地图类中的mapX和mapY声明更改为如下即可使得上面1 2 3 4的println都为 1

	public status int mapX;
	public status int mapY;

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5686629.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存