I have a Java class Book.
public class Book() {
private List<Horror> horrorBooks;
private List<Comedy> funnyBooks;
public Book(List<Horror> horrorBooks) {
this.horrorBooks = CollectionUtils.isNotEmpty(horrorBooks) ? horrorBooks : new ArrayList<> ();
}
}
I am now trying to add an additional constructor that will do the same thing but for List funnyBooks
public class Book() {
private List<Horror> horrorBooks;
private List<Comedy> funnyBooks;
public Book(List<Horror> horrorBooks) {
this.horrorBooks = CollectionUtils.isNotEmpty(horrorBooks) ? horrorBooks : new ArrayList<> ();
}
public Book(List<Comedy> funnyBooks) {
this.funnyBooks = CollectionUtils.isNotEmpty(funnyBooks) ? funnyBooks : new ArrayList<> ();
}
}
I am getting a compile error stating that both methods have same erasure
What is the most elegant way to do this? Having two constructors for the same class but one for horrorBooks and one for funnyBooks?
I was thinking I can add if / else logic but this seems like it is not the best approach to achieve what I want.