我有一个现有的类如下:
public class A {
private Map<Integer, String> map = new HashMap();
public class B{
private String name;
public B(String name) {
this.name=name;
}
//name getter
}
public void start() {
map.put(1, "One"); // example implementation
}
public B stop(int val) {
return new B(map.get(val)); // example implementation
}
}
现在我想修改类B以返回两个名称,即name1和name2,并希望在HashMap中存储一对值,如下所示:
public class A {
private Map<Integer, String> map = new HashMap();
public class B{
private String name1;
private String name2;
public B(String name1, String name2) {
this.name1=name1;
this.name2=name2;
}
// getters for name1 and name2
}
public void start() {
Pair<String, String> pair = new Pair("One", "Una");
map.put(1, pair);
}
public B stop(int val) {
if(map.containsKey(val)) {
return new B(map.get(val).getKey(), map.get(val).getValue());
}
return null;
}
}
现在我想使用一个自定义类对象来代替Pair。我是Java内部类的新手。如果一个内部类是用来在HashMap中存储一组值,以供类A的内部处理,而不应该暴露在类A之外,那么创建内部类的最佳方法是什么?还有其他建议吗?
1条答案
按热度按时间g2ieeal71#
还有其他建议吗?
假设我理解这个问题,如果你想返回一个类,那么它的存在必须是已知的,这样接收者才能访问元素。即使它作为一个简单的对象传递,唯一有用的方法也是
toString()
,因为要访问单个元素,必须首先将Object转换为所讨论的类。至于使用内部类,为什么不使用
record
(在Java 14中引入)?这是创建不可变类的一种简单方法。constructor
和toString()
(如果愿意,可以覆盖toString
)印刷品
要覆盖
toString
,只需将标准定义放在{}