使用对象映射中的方法

时间:2018-04-20 12:51:05

标签: java class dictionary

我已经从我之前的帖子和集成的地图,子类和布尔变量中获得了建议。我的问题是现在从地图中获取字母对象。我可以成功地从我的地图中执行.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命令获取对象并从中调用方法?

1 个答案:

答案 0 :(得分:0)

您应该创建一个接口(或抽象类,请参见下面的代码段),让我们说Letter,然后创建/扩展它的两个类ConsonantVowel。现在,您可以创建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 {
}