告诉一个Java类<;T>;它有一个特定的方法

告诉一个Java类<;T>;它有一个特定的方法,java,class,generics,types,Java,Class,Generics,Types,我目前正在实现一种算法,在数据集中生成高方差聚类。在我的不同测试中,我将使用许多不同的数据类型,因此我需要使我的集群类可用于任何数据类型T。因此,我有: public class Cluster<T> { private int score; private ArrayList<T> list; private int k; 公共类集群{ 个人智力得分; 私有数组列表; 私人INTK; 为了能够评估该算法的有效性,我们有一个基于集群中每个对象之

我目前正在实现一种算法,在数据集中生成高方差聚类。在我的不同测试中,我将使用许多不同的数据类型,因此我需要使我的集群类可用于任何数据类型T。因此,我有:

public class Cluster<T> {
    private int score;
    private ArrayList<T> list;
    private int k;
公共类集群{
个人智力得分;
私有数组列表;
私人INTK;
为了能够评估该算法的有效性,我们有一个基于集群中每个对象之间的距离计算的分数。以下是computeScore()方法:

private void computeScore(){
如果(list.size()<2)得分=0;
else if(list.size()==2){
T x=列表。删除(1);
T y=列表。删除(0);
分数=x。距离(y);
列表。添加(y);
增加(x);
}
}
问题是,在computeScore()方法中,行
score=x.distanceTo(y)
抛出一个错误,因为对于类型T,distanceTo()方法未定义。对于我的所有数据类型,我将在此处定义此方法。我如何告诉集群类,将定义distanceTo()


提前感谢您的帮助。

我想您可以使用
并在
您的类中定义
距离()

这可以通过反射来实现


类似于…
x.getClass().getMethod(“distanceTo”,“Class[])T.invoke(x)

你在哪里定义
distanceTo
方法?对于所有支持的类型,它是在某种超类型中吗?是的,只是对它进行基类化。我可能会定义一个声明
distanceTo
接口。但它几乎是相同的解决方案。这似乎可行,但我需要将其扩展到所有数据类型类我想我要实现一个名为DataType的类,它只包含distanceTo(),我所有的数据类型类都将继承DataType。然后T将扩展DataType。
private void computeScore() {
    if (list.size() < 2) score = 0;
    else if (list.size() == 2) {
        T x = list.remove(1);
        T y = list.remove(0);
        score = x.distanceTo(y);
        list.add(y);
        list.add(x);
    }
}