【问题标题】:Java: beginner help getting variableJava:初学者帮助获取变量
【发布时间】:2015-01-18 02:05:16
【问题描述】:

这是一个学校项目。我已经构建了一个简单的类,其中包含 3 个字符串变量和一个构造函数来填充这些字段。

public class Names {
String firstName;
String middleName;
String lastName;

public Names(String name){
    System.out.println("Passed name is: " + name);
}

public void setFirstName(String name){
    firstName = name;
}
public void setMiddleName(String name){
    middleName = name;
}
public void setLastName(String name){
    lastName = name;
}

public static void main(String []args){
    Names drew = new Names("Drew");

    drew.setFirstName("Drew");
    drew.setMiddleName("Leland");
    drew.setLastName("Sommer");

    System.out.println(drew.firstName + " " + drew.middleName + " " + drew.lastName);
}

public getFirstName(String name){

}
public getMiddleName(String name){

}
public getLastName(String name){

}}

在底部是 getFirstName、getMiddleName、getLastName 我希望能够传递 getFirstName(drew) 之类的内容并让它返回 draw.firstName?

我对 java 很陌生,仅供参考。

【问题讨论】:

  • 从 getXxxx() 方法中获取参数。它们应该是无参数的并且应该返回请求的值。任何教程都会向您展示这一点,尤其是this one。另请查看Java Info

标签: java methods


【解决方案1】:

这些是"getter" methods,用于返回实例字段的值。 drew 是您当前的 Names 实例,因此如果您在此实例上调用这些方法,您将收到您使用“setter”方法设置的值。而且由于您是在特定实例上调用它们,因此您不需要将其作为方法参数传递。这就是为什么这些 getter 方法通常是无参数的。

它们应该是这样的:

public String getFirstName() {
    return firstName;
}

public String getMiddleName() {
    return middleName;
}

public String getLastName() {
    return lastName;
}

请注意,我已经添加了对应的返回类型(String),因为每个实例字段的数据类型都是String

您在main 方法中的println 调用将如下所示:

System.out.println(drew.getFirstName() + " " + drew.getMiddleName() + " " + drew.getLastName());

【讨论】:

    【解决方案2】:
    public String getFirstName() {
        return this.firstName;
    }
    

    这将返回您调用它的对象的名字。

    你可以这样称呼它:

    System.out.println(drew.getFirstName() + " " + drew.middleName + " " + drew.lastName);
    

    然后您可以对 getMiddleName 和 getLastName 执行相同的操作。

    【讨论】:

    • 应该是public String getFirstName()
    【解决方案3】:

    您的 get 方法将由您的 Names 类的实例调用。当您创建一个类的实例并为其分配一个变量名时,只需使用该变量名来调用该方法,它将返回该实例的名称。

    //Instantiate the Names class
    Names drew = new Names("Drew");
    
    //Call methods to set the names
    drew.setFirstName("Drew");
    drew.setMiddleName("John");
    drew.setLastName("Smith");
    
    //Call methods to get the names
    drew.getFirstName();   //Returns "Drew"
    drew.getMiddleName();  //Returns "John"
    drew.getLastName();    //Returns "Smith"
    

    而且,就像其他人建议的那样,您的 get/set 方法应该是这样的:

    public void setFirstName(String n){
        firstName = n;
    }
    public String getFirstName(){
        return firstName;
    }
    

    【讨论】:

      【解决方案4】:

      正如您所说,“我希望能够传递 getFirstName(drew) 之类的内容并让它返回 draw.firstName” 所以实现很简单,

      public String getFirstName(Names other) {
          return other.firstName;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-10
        • 1970-01-01
        • 2019-07-09
        • 2021-04-11
        • 2022-01-17
        相关资源
        最近更新 更多