java - 告诉 Java Class<T> T 中有某个方法

标签 java class generics types

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

public class Cluster<T> {
    private int score;
    private ArrayList<T> list;
    private int k;

为了能够评估该算法的有效性,我们根据集群中每个对象之间的距离计算出一个分数。这是computeScore() 方法:

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);
    }
}

问题在于,在computeScore() 方法中,行score = x.distanceTo(y) 会抛出错误,因为对于类型T,distanceTo() 方法未定义。对于我的所有数据类型,我将定义此方法以供此处使用。如何告诉 Cluster 类将定义 distanceTo()?

预先感谢您的帮助。

最佳答案

我想你可以使用<T extends YourClass>并定义distanceTo()YourClass .

关于java - 告诉 Java Class<T> T 中有某个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22617607/

相关文章:

java - 通过aspectj拦截拦截函数内部的所有函数调用

java - @OneToMany 关系使用单个@JoinColumn?

java - 在 Spring Boot 中使用 spring.application.json 作为 application.properties 文件

PHP 自动加载 - 找到文件 - 类 fatal error

python - 在导入的模块中使用外部类方法

php - 在自定义插件错误问题中扩展 WC_Product 类(找不到 WC_Product 类)

java - 为什么Java声称1.5版本需要向后兼容?

java - 具有多个类的上限 - Java 泛型

Java Swing GlassPane 拖动性能

java - 为枚举构建一个通用的 DynamoDB 编码