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

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

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梯形图 – 如果要创建新类型,只需创建新的类/构造函数.

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

  1. java html对象属性_java中对象属性可以是另外一个对象或对象的参考

    7.对象的属性可以是另外一个对象或对象的参考 通过这种方法可以迅速构建一个比较大的系统. class Motor { Light[] lights; Handle left, right; KickS ...

  2. java自定义注解实现校验对象属性是否为空

    前面学习了如何自定义一个注解:java如何优雅的自定义一个注解 下面来实战演示一下如何使用自定义注解做一些实际的功能.比如校验对象属性是否为空. 一.自定义一个NotNull注解 我们自定义一个Not ...

  3. maya对象属性_了解每粒子属性和每对象属性

    可以将两种类型的属性动态添加到"粒子形状"(particle shape)节点: 每粒子 每对象 每粒子属性允许您分别设定对象的每个粒子的属性值.每对象属性允许您通过单个值整体设定 ...

  4. maya对象属性_Maya2014全面使用手册_了解每粒子属性和每对象属性_软件教程_资源库...

    摘要:Maya2014全面使用手册_了解每粒子属性和每对象属性_软件教程_资源库 相关视频教程学习推荐: 造型设计<鹫>造型上色完整流程[实名认证] 5,777人在学 总时长:27h 可以 ...

  5. java访问对象的属性_java访问对象的属性和行为详细介绍

    每一个对象都会有属于自己的属性和行为,下面的文章就对java访问对象的属性和行为做了一下详细的介绍. 对象的属性和行为在类当中体现为成员变量和成员方法,其中成员变量对应对象的属性,成员方法对应对象的行 ...

  6. java反射可以获得什么属性_java反射获得属性的值

    java反射api_IT/计算机_专业资料.java反射教程,深刻理解java反射,反射 聯絡郵箱:zhiyong.tong@ 反射 API 反射 API 表現,或者反射類,接口,和對象在現..... ...

  7. java 对象的属性_java-更新对象属性

    我正在使用Struts 2,我的问题是我不想更新所有对象属性,因为我得到了一些敏感数据. 这是我的代码示例 public class person { private name; private em ...

  8. Java通用工具类之按对象属性排序工具类

    本工具类为按对象属性排序工具类,实现的功能: 1.按对象的一个属性和多个属性进行排序. 2.按对象属性正序和倒序排列. 3.完美支持int等基础类和Integer等包装类. 4.完美支持属性为实现了C ...

  9. Python OOP:面向对象基础,定义类,创建对象/实例,self,创建多个对象,添加对象属性,访问对象属性,__init__方法,带参数的__init__,__str__方法,__del__方法

    一.理解面向对象 面向对象是⼀种抽象化的编程思想,很多编程语⾔中都有的⼀种思想. ⾯向对象就是将编程当成是⼀个事物,对外界来说,事物是直接使用的,不用去管他内部的情况.⽽编程就是设置事物能够做什么事. ...

最新文章

  1. python 内置方法
  2. 《JavaScript面向对象精要》——1.8 原始封装类型
  3. Use pgpool and pgbouncer limit global concurrent SQL Execution
  4. Kooboo CMS - Html.FrontHtml.Position 详解
  5. boost::mp11::mp_filter相关用法的测试程序
  6. Android的DataBinding原理介绍
  7. 2019CCPC-江西省赛(重现赛)- 感谢南昌大学
  8. 【ArcGIS风暴】ArcGIS自定义坐标系统案例教程---以阿尔伯斯投影(Albers)为例
  9. [转]Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务
  10. python 对json数据读取及保存与读取,对dump,dumps,load,loads的理解
  11. 有效提升 Virtual Server 2005 R2 with SP1 的速度
  12. 对于vsftp writable anonymous root问题的解决
  13. 【Tomcat】Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析
  14. win10电脑怎么升级安装win11正式版,电脑升级win11的方法
  15. Postman Request Payload发送请求
  16. 多图片上传,多文件上传。插件diyUpload.js
  17. 数字逻辑课程设计(一):数字时钟——logisam模拟实现
  18. EBS R12中SLA子分类帐与子模块的关联关系
  19. (SWAT-6)输入表写入及模型运行
  20. MyBatisPlus 查询selectOne方法

热门文章

  1. 英语采访问题之:你每天上班的动机是什么?
  2. SAP CRM one order框架到了S/4HANA后是如何重构的
  3. class vue 添加图片_vue+element 添加图片组件
  4. Android学习笔记篇2. 单选按钮、复选按钮
  5. 计算机中心防雷电安全措施,防雷电有哪些安全措施
  6. proxy connect abort处理方法_Java代理设计模式(Proxy)的几种具体实现
  7. java创建一个图片_Java 创建一个简单的验证码图片
  8. mysql 在时间上加120s_sqlserver日期推算(年,季度,月,星期推算)
  9. golang语言变量定义、打印、占位符
  10. Android无需权限保存文件,即使使用用户权限,也无法在外部存储上保存文件[Android]...