是否可以构造一个给定字符串,toString()方法和Class本身的对象。
例如我们有Book Book。
class Book
{
// ...
String getTitle()
{
return title;
}
String getPubYear()
{
return pubYear;
}
void setTitle(String _title)
{
title = _title;
}
void setPubYear(String _pubYear)
{
pubYear = _pubYear;
}
public String toString(){
return title+" "+pubYear;
}
}
如果我们有字符串:
"ExampleTitle 2017"
我们如何创建类Book的实例,其中包含属性:
title=ExampleTitle
pubyear=2017
我们可以做到以下几点:
Book book = new Book();
String exampleString = "ExampleTitle 2017";
String[] parts = exampleString.split();
book.setTitle(parts[0]);
book.setPubYear(parts[1]);
但这是漫长的啰嗦。有更自动的方法吗?
答案 0 :(得分:2)
您可以添加新的构造函数:
public Book(String s) {
String[] parts = s.split(" ");
if (parts.length() == 1) {
this.title = s;
} else {
this.title=parts[0];
this.pubYear(Integer.parseInt(parts[1]));
}
}
你应该自己添加NumberFormatException处理,但我推荐我的post。
上面的构造函数将采用String
,将其拆分为空格并执行您已完成的操作。您可以像使用它一样使用它:
Book book = new Book("Example_title 2001");
但这不是最好的方法。您应该使用标准模式,首先将要设置的值提取到Book
,然后将它们传递给构造函数。
做你想做的事的好方法是创建另一个构造函数:
public class Book {
public Book(String s, int y) {
this.title = s;
this.year = y;
}
}
请将year
字段更改为int
或long
。只要您不使用String
,年份就不应该是Roman numbers
。