java返回属性_java – 根据对象属性确定哪个枚举返回

我建议你使用简单的继承与不可变对象.

所以,首先你必须创建抽象类:

public abstract class AbstractPerson {

private final String name;

private final Optional nickname;

private final boolean speaksEnglish;

private final PersonType personType;

protected AbstractPerson(final String name, final Optional nickname, final boolean speaksEnglish, final PersonType personType) {

this.name = name;

this.nickname = nickname;

this.speaksEnglish = speaksEnglish;

this.personType = personType;

}

public String getName() {

return name;

}

public Optional getNickname() {

return nickname;

}

public boolean getSpeaksEnglish() {

return speaksEnglish;

}

public PersonType getPersonType() {

return personType;

}

}

使用PersonType枚举:

public enum PersonType {

TypeOne, TypeTwo, TypeThree;

}

现在,我们在子类中有三个选项和相应的构造函数:

public final class EnglishSpeakingPerson extends AbstractPerson {

public EnglishSpeakingPerson(final String name, final String nickname) {

super(name, Optional.of(nickname), true, PersonType.TypeOne);

}

}

public final class Person extends AbstractPerson {

public Person(final String name, final String nickname) {

super(name, Optional.of(nickname), false, PersonType.TypeTwo);

}

public Person(final String name) {

super(name, Optional.empty(), false, PersonType.TypeThree);

}

}

在这种情况下,我们的具体类是不可变的,其类型是在创建时定义的.您不需要创建if-else梯形图 – 如果要创建新类型,只需创建新的类/构造函数.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值