java - 设置在另一个类中分配的私有(private)变量的问题

标签 java

这是我的盔甲和武器设置的代码块,但是 Eclipse 告诉我,当我添加强度和生命值的变量时,没有为其分配变量。我认为这是因为它是我的玩家类中的私有(private)变量,所以我是否将这些变量设为公共(public)而不是私有(private)?

public void setArm(){
        switch
        (threeSidedDie.getValue()){
        case 1: Armors = "helmet";
            hitP += 1;
            break;
        case 2: Armors = "gloves";
            hitP += 2;
            break;
        case 3: Armors = "chest armor";
            hitP += 3;
            break;
        }
    }

最佳答案

您听说过 Feature EnvyLaw of Demeter

Feature Envy: Methods that make extensive use of another class may belong in another class. Consider moving this method to the class it is so envious of.

您应该主要根据 player 类中的 player 值来移动流程,从而解决您的问题,而不涉及丑陋的 getter 和 setter。

比喻:如果我每天都需要转账到我的账户,我有两个选择:

  1. 向银行索取所有数据并自行准备转账。可能容易出错,因为我能够避免银行设定的任何潜在的严格规则。
  2. 告诉银行员工:“请将这笔钱转入我的账户”(无需索要任何数据!)

显然,2) 是合乎逻辑的建议。

提问违背了面向对象编程的本质。告诉/发送消息是本质。在极少数情况下,需要询问。

从第一年起就养成了良好的习惯;)

关于java - 设置在另一个类中分配的私有(private)变量的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23272587/

相关文章:

java - 如何给JDialog添加组件

java - Java 中的泛型

java - 在 netbeans 中使用 JTable

java - 连续调用 'SOAPMessage.writeTo' 抛出读取错误

java - 如何在运行时从 json 数组中删除完整条目

java - Spring 卡夫卡: filtering KafkaNull values from payload

java - Go channel vs Java BlockingQueue

java - struts2中的prepare拦截器是如何工作的?

Javamail IMAP 检索特定日期时间内的最新电子邮件

java - 在 java 中排除 file.lists() 中的系统文件