我有
interface Module {
List<String> parse();
}
该接口有几种实现,在应用程序中我希望有一个HashSet<Module>
确保每个模块只有一个实例。为此,我需要hashCode
为每个班级提供一个合适的。的正确实现是hashCode
为一个模块类的各种实例返回相同的常量,但为不同的模块返回不同的常量。
为了创建一个不错的设计解决方案,我想根据模块名称计算 hashCode,例如:
public int hashCode() {
return ConcreteModule.class.getName().hashCode();
}
但是这个代码对于接口的每个实现都是相同的......我的想法是创建一个实现哈希码的抽象模块,但是是否有可能达到扩展这个抽象类的类的名称?喜欢:
public abstract class AbstractModule implements Module {
public int hashCode() {
// get the class name of class extending the abstract module
// and return hashcode of its string name
}
}
接着
public class ConcreteModule extends AbstractModule implements Module {
// implementation of parse() no need to create hashcode for each module
}
你会建议为每个模块创建 hashCodes 还是可以创建我正在尝试的东西?欢迎任何建议或意见。提前致谢