[英]Define constructor for this enum for the list in JAVA?
public enum Role{
ADMIN("SMITH","KEVIN"),
STUDENT("JACK", "JILL", "MARRY", "MALA"),
GURDIAN("BOB");
}
如何在JAVA中為此枚舉定義構造函數?
我可以按以下方式發起嗎?
Role(List<String> userlist){}
我能想到的最合適的構造函數是String
varargs,如下所示:
Role(String... names) {
// TODO
}
采用List<String>
構造函數將不匹配簽名,也不會自行編譯。
但是,您始終可以重載構造函數。
您絕對可以使用varargs樣式構造函數
private final List<String> values;
Role(String... values) {
this.values = Arrays.asList(values);
}
public List<String> getValues() {
return values;
}
然后,當您需要基於提供的名稱的特定角色時,請查找為
public static Role find(String name) {
for (Role role: Role.values()) {
if (rol.getValues().contains(name)) {
return rol;
}
}
return null;
}
public enum Role{
ADMIN("SMITH","KEVIN"),
STUDENT("JACK", "JILL", "MARRY", "MALA"),
GURDIAN("BOB");
private String[] values;
Role(String ... values) {
this.values = values;
}
}
您可以在構造函數中使用use變量參數varargs,例如:
public enum Role {
ADMIN("SMITH","KEVIN"),
STUDENT("JACK", "JILL", "MARRY", "MALA"),
GURDIAN("BOB");
private Role(String...name) {
this.values = name;
}
}
有聲明(在枚舉中),在字段中存儲和用法。
由於這些是枚舉類中定義的單例,因此聲明的形式僅在優雅方面很重要。
public enum Role{
ADMIN(user("SMITH", "KEVIN")),
STUDENT(user("JACK", "JILL"), user("MARRY", "MALA")),
GURDIAN(user("BOB"));
// Local factory methods
// User or Principal
private User user(String firstname, String surname) { ... }
private User user(String firstname) { ---}
private final Set<User> users;
Role(User... users) {
if (users.length == 1) { ...
}
this.users = new HashSet<>();
Collections.addAll(users);
}
public boolean ...(...) {
...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.