创建一个Object并使用Java中的传递参数对其进行初始化

时间:2014-03-06 23:05:43

标签: java object parameters

我正在尝试创建一个新对象并使用以下命令传递的参数对其进行初始化:

java -jar JAR-FILE.jar store Information.dat ClientName "Address" City Country HomePhone OfficePhone CellPhone

其中ClientName是客户的名称,"Address"包含客户的地址等。客户可以有HomePhoneOfficePhone或{{1或者所有这些甚至更多的电话号码。

这是我尝试使用参数初始化它的类:

Cellphone

这是private static void SaveClient(String[] args) throws Exception { Client SaveClient = new Client(...); .... out.writeObject(SaveClient); out.close(); } 构造函数:

Client

但我不知道如何使用传递参数初始化它。我们可以假设信息是有效的,我也不想仅仅修改public class Client{ private String ClientName; private Address address; private List<String> PhoneNumbers; public Client() { this.PhoneNumbers = new ArrayList<String>(); } public Client(String ClientName, Address address) { this(); this.name = ClientName; this.address = address; } public void AddPhoneNumber(String number) { this.PhoneNumbers.add(number); } .... }

对“客户端”构造函数进行任何更改

3 个答案:

答案 0 :(得分:0)

使用String[] args,根据需要转换这些参数 (例如int,long,String或任何你需要的东西)和
然后将它们传递给Client构造函数。

答案 1 :(得分:0)

假设您的客户端类具有所有需要的属性并且args数组元素定位已知,您可以使用类似的内容

Public Client (String[] args){
    this.address = args[6]; // Based on your edit this will need to be an Address object. may look something like: this.address = new Address(args[6]);  assuming Address object has a constructor that accepts String
    ....
}

如果字符串数组的顺序不正确或者事情在错误的地方或根本不存在,那么这会变得非常难看。如果您要保存的Client属性是intdouble或者您有什么,那么您还必须进行一些转换(转换值类型),因为args元素即将到来仅限String

答案 2 :(得分:0)

首先,您需要确定提供的参数数量是否符合您的预期需求......

// This assumes that address, city, country, home phone, 
// office and cell phone are optional
if (args.length >= 3) {...

或者

// This assumes that all the values are required...
if (args.length >= 9) {...

如果其中任何一种情况不真实(根据您的需要),那么您应该显示某种错误消息并可能退出......

然后,您需要从args ...

中提取值
// This assumes that some of the arguments are optional...
String clientName = args[2];
String address = args.length > 3 ? args[3] : null;
String city = args.length > 4 ? args[4] : null;
String country = args.length > 5 ? args[5] : null;
String homePhone = args.length > 6 ? args[6] : null;
String officePhone = args.length > 7 ? args[7] : null;
String cellPhone = args.length > 8 ? args[8] : null;

// This assumes that all the parameters are mandatory
String clientName = args[2];
String address = args[3];
String city = args[4];
String country = args[5];
String homePhone = args[6];
String officePhone = args[7];
String cellPhone = args[8];

然后创建您的Client对象...

Client client = new Client(
    clientName,
    address,
    city,
    country,
    homePhone,
    officePhone,
    cellPhone);

这当然意味着您的Client对象需要一个能够接受您提供的信息的构造函数。您的示例Client不起作用,除了它有一个无效的Person构造函数,它无法接受所有这些信息......

public class Client{

    private String ClientName;
    private Address address;
    private List<String> PhoneNumbers;

    public Client() {
        this.PhoneNumbers = new ArrayList<String>();
    }

    public Client(String clientName, String address, String city, String country, String homePhone, String officePhone, String cellPhone) {
        this();
        ClientName = clientName;
        address = new Address(...); // No idea of the parameters for this...
        AddPhoneNumber(homePhone);
        AddPhoneNumber(officePhone);
        AddPhoneNumber(cellPhone);
    }

例如......