我有以下Book类:
public Book(String bookTitle,ConcurrentHashMap<Integer,String> authors, String bookType ) throws InvalidDataException{
this.setBookTitle(bookTitle);
this.setAuthors(authors);
this.setType(bookType);
}
private void setBookTitle(String title) throws InvalidDataException
{ if(title == null || title.length() < 1){
throw new InvalidDataException("Must Provide Book Title");
}
this.bookTitle = title;
}
private void setAuthors(ConcurrentHashMap<Integer,String> authors) throws InvalidDataException
{ if(authors.isEmpty()){
throw new InvalidDataException("Must Provide At least one author");
}
this.authors = new ConcurrentHashMap<Integer,String>(authors);
}
private void setType(String type) throws InvalidDataException
{
if(type == null || type.length() < 1){
throw new InvalidDataException("Must Provide Book Type");
}
this.bookType = type;
}
我应该让我的构造函数调用setter方法(我喜欢这种方法,因为它有条理,对我来说更容易)或检查构造函数中的变量并在需要时抛出异常并删除setter?然后,我将使变量final
。哪种方法更好?
答案 0 :(得分:2)
你的方法很好,
但是您可以利用已有的框架来抛出异常, 即Spring注释,如@ NotNull,@ NotEmpty,@ Valid等。
你会发现他们正以更优雅的开箱即用方式为你提供你正在做的事情。 :)
例如
for (var i=0; i<vm.tags.length; i++) {
for(var j=0; j<3; j++){
if (vm.tags[i].term_id === tag.term_id) {
if (vm.tags[i]['border' + j]) {
vm.tags[i]['border' + j] = false;
}
}
}
}
\p{Punct}
让你了解更多:)也看看java的maven项目来处理你的依赖关系..信任我。