naw*_*ara 9 java oop inheritance interface
我的项目是关于在java中实现hyperGraph
我的hyperGraph包含各种类型的hyperEdge,具体取决于我所拥有的顶点类型
顶点类型:图像,标签......
HyperEdge =同质(关联相同类型的顶点)/异构(关联不同类型的顶点)
同构HyperEdge =图像图像HyperEdge/Tag-tag hyperEdge
这是一个快速绘制的UML图

这是我的代码
public interface HomogenousHyperedge< T extends Vertex<L>, L> extends Hyperedge {
public abstract List<T> searchNearstNeighborsVertex(
Hypergraph hypergraph, T vertex);
}
Run Code Online (Sandbox Code Playgroud)
public class ImageImageHyperedge implements
HomogenousHyperedge<ImageVertex, Map<String,Instance>> {
@Override
public List<ImageVertex> searchNearstNeighborsVertex(Hypergraph hypergraph,
ImageVertex vertex) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
问题出在ImageImageHyperEdge类中我应该知道基于它的特征是什么类型我将搜索ImageVertex最近邻居我不能将它传递给超级接口的抽象方法因为TagTagHyperEdge类不需要它
如果我用{featureOneHyperEdge类,... featureFiveHyperEdge类}替换ImageImageHyperEdge类(我知道它的特征类型)它将是一个重复的代码,因为它是相同的最近邻搜索算法
feature =图像的低级特征(例如颜色直方图)
我有5种低级特征
我将使用每种特征来搜索当前图像的最近邻居
所有特征都存储在一个简单的文本文件中
,使用相同的算法为了搜索最近的邻居
,每次只更改文件
根据您所写的有关“功能”的内容,我想说这适合作为 ImageImageHyperEdge 类中的字段。您可以使用定义它的任何各种成员来创建一个FeatureType类。
public class ImageImageHyperedge implements
HomogenousHyperedge<ImageVertex, Map<String,Instance>> {
private FeatureType featureType;
@Override
public List<ImageVertex> searchNearstNeighborsVertex(Hypergraph hypergraph,
ImageVertex vertex) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)