java - 在java中放入hashmap时如何从对象中排除属性
问题描述
可以说,Employee
类具有三个属性。
class Employee {
int id;
String name;
String team;
public Employee(){
this.id = id;
this.name = name;
this.team = team;
}
}
我想team
在放入HashMap
.
Map<Integer, Employee> empMap = new HashMap<>();
Employee e1 = new Employee(100, "John", "Dev");
Employee e2 = new Employee(101, "Mary", "Dev");
Employee e3 = new Employee(103, "Andy", "QA");
empMap.put(e1.getId(), e1);
empMap.put(e2.getId(), e2);
empMap.put(e1.getId(), e3);
中的值empMap
不应该team
在其中具有属性。创建新对象会起作用,但实时成本很高。有没有办法在不创建新对象的情况下实现这一点。
解决方案
正如您所提到的,一种选择是创建没有团队属性的新对象。另一种是使用外观
public class MapEmpFacade extends Employee {
public MapEmpFacade(Employee emp) {
//define all methods to return the method results from emp, except for getTeam
}
public int getTeam() { return null; } //override getTeam
}
推荐阅读
- php - 正则表达式前 3 个字母以某种方式表示某事
- ios - 创建子 UIView 的 UIView 正在生成层次约束警告
- python - 编写 Python 脚本来自动化 llvm 代码覆盖率测试
- java - 使用 Kafka-Spark Streaming API 处理流数据时重复
- ios - 如何访问创建的目录?- NSCocoaErrorDomain 代码=257
- javascript - Javascript:数组不保留值
- xml - NetSuite 实时运费计算器调整请求
- deployment - 在 jboss 中部署应用程序时出现 ClassNotFoundException
- c# - 使用 lex.Match 而不是 lex.Autocomplete 时 Redis Lexicographicset 超时错误
- python - Python3:字符串索引必须是整数