gpt4 book ai didi

java - 使用私有(private) Setter 或在构造函数中工作

转载 作者:行者123 更新时间:2023-11-30 08:41:01 24 4
gpt4 key购买 nike

我有以下 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。哪种方法更好?

最佳答案

你的方法很好,

但是你可以利用现有的框架来抛出你的异常,即像@NotNull、@NotEmpty、@Valid 等Spring 注解。

您会意识到他们正在以一种开箱即用的更优雅的方式为您提供您正在做的事情。 :)

例如

    public class Book {

@NotEmpty(message="please fill author")
pirvate String author;
@NotEmpty("message="please fill title")
private String title;
@NotNull(message="you get my drift ;)")
private Map<K,V> someMap;

public Book(String author,String title, Map map){
this.author = author;
//blah blah no need for the setters...
}

// blah blah other getters and setters

}

link为了让您了解更多 :) 还可以查看 java 的 maven 项目来处理您的依赖关系..相信我。

关于java - 使用私有(private) Setter 或在构造函数中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35324033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com