首页 > 解决方案 > 从 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;

    }

请问有什么建议吗?....提前谢谢!!!!

标签: javaspring-boot

解决方案


您可以将要存储沉船的变量传递给方法,或者在我看来更清洁的方法,返回变量。如果您的方法已经必须返回另一种类型,请尝试重构它以分离关注点。如果您确实需要一个共享变量,则从外部创建它并将其传递到您需要它的区域,但请注意在访问它时要考虑线程安全并且不要遇到任何竞争条件。


推荐阅读