java - 如何在对象中保存私有(private)字段(在方法中获得)的值?

标签 java

我想不出在类对象中保存 supplierName 值的方法。我正在尝试使用用户输入在 addItem 方法中更改它,并将其存储在类对象中。它不起作用。我究竟做错了什么?我需要更改我的构造函数吗?还是使用 getter 方法?

这是我的代码:

import java.util.Scanner;

public class PurchasedItem extends Item {

    private String suppplierName;

    public PurchasedItem() {}

    @Override
    public boolean addItem(Scanner input) {
        super.addItem(input);   

        System.out.print("Enter the name of the supplier: ");
        suppplierName = input.next();

        return true;
    }

    @Override
    public String toString() {

        String str = super.toString();
        return str + " Supplier: " + suppplierName;
    }
}

最佳答案

一个解决方案是允许构造函数接受一个参数,例如:

public PurchasedItem(String constructorArgument){
    supplierName = constructorArgument;
}

然后,您可以执行如下操作:PurchasedItem item = new PurchasedItem("some supplier");

由于类变量是私有(private)的,因此您还需要 getters/setters。

例如:

二传手:

public void setSupplierName(String s){
    this.supplierName = s;
}

setter/getter :

public String getSupplierName(){
    return this.supplierName
}

然后要进行操作,您需要执行以下操作:

item.setSupplierName("some company");
item.getsupplierName();

不过,在使用 setter 时,您应该注意线程安全。

关于java - 如何在对象中保存私有(private)字段(在方法中获得)的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48575056/

相关文章:

java - java Scanner 类的 nextLine() 问题

java - 如何更改 android.R.layout.simple_list_item_1 的文本颜色?

Java 代码执行难题——跳行而不抛出异常

java - EJB认证

java - 我怎么知道我的字符串包含变音符号?

java - AsyncTask 和 Thread 不会在 java/android 应用程序中运行两次

java - 应使用哪种工具来测量程序单元的性能?

java - DisposableObserver 与(常规)观察者

java - 我需要有关阅读来自 SQLite 的已签名电子邮件的帮助

java - 从 viewpager 中的 Activity 开始新 Activity ?