我已经从我之前的帖子和集成的地图,子类和布尔变量中获得了建议。我的问题是现在从地图中获取字母对象。我可以成功地从我的地图中执行.get命令,但是我无法从中运行类方法。这是一些代码snippits。 这是我的Hash Map的结构。
HashMap<String, Object> mapVowel = new HashMap<>();
HashMap<String, Object> mapConsonant = new HashMap<>();
mapVowel.put("a", a);
mapConsonant.put("b", b);
mapConsonant.put("c", c);
mapConsonant.put("d", d);
mapVowel.put("e", e);
我正在尝试使用命令查找字母对象的键,然后获取字母对象,并使用我的超类字母来运行addChar方法,我必须将其添加到字符串中。截至目前,我有一个get命令。
int firstConsonant = 0 + (int)(Math.random() * 19);
mapConsonant.get(stringConsonantArray[firstConsonant]
那么如何通过map命令获取对象并从中调用方法?
答案 0 :(得分:0)
您应该创建一个接口(或抽象类,请参见下面的代码段),让我们说Letter
,然后创建/扩展它的两个类Consonant
和Vowel
。现在,您可以创建Map<String, Letter>
并将所有元素放在那里。根据用例,Letter
接口将具有两个类必须实现的一些方法,因此您可以从派生接口调用该方法
interface Letter {}
class Consonant implements Letter {}
class Vowel implements Letter {}
例如像
这样的东西interface Letter {
char getLetter();
}
class Consonant implements Letter {
private char letter;
@Override
public char getLetter() {
return letter;
}
}
class Vowel implements Letter {
private char letter;
@Override
public char getLetter() {
return letter;
}
}
同样,根据用例,可能需要创建abstract class
。这个抽象类可以由其他类扩展,也可以提供常用方法。
abstract class Letter {
char letter;
char getLetter() {
return letter;
}
}
class Consonant extends Letter {
}
class Vowel extends Letter {
}