java - 从 SpringBoot Java 中的其他私有方法中的私有方法中的变量获取信息
问题描述
Holla 开发人员.....我正在尝试访问一个已经声明并填充了另一个框架方法的变量,在这个 BattleShip 项目中,我正在使用 Java 作为后端,Vuejs 作为前端......这是我的第一个方法;
private List<Set<String>>makeShipsSinkHitsDto(Set<Salvo> salvoSet, GamePlayer gamePlayer){
List<Set<String>>dto=new LinkedList<>();
Set<String> sunkShips=new HashSet<>();--->THIS IS THE VARIABLE I WANT TO ACCESS FROM OTHER METHOD
for(Ship ship:getOppDetails(gamePlayer).getShips()){
Integer shipSize=ship.getShipPositions().size();
for(Salvo salvo:salvoSet.stream().collect(Collectors.toList())){
for( String LocationShots:ship.getShipPositions()){
if(salvo.getShootToPositions().contains(LocationShots)){
shipSize=shipSize-1;
if(shipSize==0){
sunkShips.add(ship.getTypeShip());
}
}
}
}
}
dto.add(sunkShips);
return dto;
}
其中变量:
Set<String> sunkShips=new HashSet<>()
将是存储所有沉船的方法,然后在我不断发展的第二种方法中,我想访问此变量以设置 Game Over 状态的逻辑,但找不到不那么复杂的方法它!!这是我的第二个尚未完成的方法:
private Map<String,Object> makeGetStateOfGamePlayerDto(GamePlayer gamePlayer){
Map<String,Object>dto=new HashMap<>();
if(getOppDetails(gamePlayer)==null){
dto.put("state","Waiting for opponent in game");
}
else if(getOppDetails(gamePlayer)!=null){
dto.put("state","Welcome to game,place Ships please");
if(gamePlayer.getShips().size()==5){
dto.put("state","Ships in Coordenates, Shoot!!!");
}
if(gamePlayer.salvos.size()<getOppDetails(gamePlayer).salvos.size()){
dto.put("state","Enemy hasn't shot, wait for their shots");
}
AND THEN HERE SOME CONDITIONAL ALLOWING ME TO ACCESS
THAT VARIABLE IN THE FIRST METHOD ...!
}
return dto;
}
请问有什么建议吗?....提前谢谢!!!!
解决方案
您可以将要存储沉船的变量传递给方法,或者在我看来更清洁的方法,返回变量。如果您的方法已经必须返回另一种类型,请尝试重构它以分离关注点。如果您确实需要一个共享变量,则从外部创建它并将其传递到您需要它的区域,但请注意在访问它时要考虑线程安全并且不要遇到任何竞争条件。
推荐阅读
- wordpress - 如何修复 wordpress 中的 .htaccess 问题
- c# - 如何将稍微复杂的场景从 -> 映射到成员场景
- data-warehouse - 如何对链接到具有不同粒度级别的多个事实的维度表进行建模?
- c# - 从get set方法理解功能
- python - 将 curl 命令转换为 request.post
- java - 覆盖 Enum 中的 equal、toString、hashcode 方法
- wechat - 如何设置微信小程序推送消息服务?
- arrays - 使用带有 for 循环的 setvalues
- javascript - 数组内过滤数组
- ios - 用于更新视图的 Swift 主循环