首页 > 解决方案 > java中的泛型和方法

问题描述

我有一个问题要在 java 中解决。有一种方法,它以对象为参数。在该方法中,有一个 if 语句。但我不能使用 if 语句。我们必须在那个类中使用 T 泛型,所以我想比较 2 个相同类型的对象,但另一方面,他不想获得 getAge() 方法。也许你们有一些想法?这是一些代码。

public boolean isOlder(T other) {
        if(this.getAge() > other.getAge()){
            return true;
        }else{
            return false;
        }
} 

标签: javagenerics

解决方案


除非另有明确说明,否则泛型类型应该是 的子类型Object,它没有getAge()方法。

您可能想要做的是:


//provided that we have somewhere
public class BaseClass {
...
  public int getAge() ....
...
}

// you can write method like this:
public <T extends BaseClass> boolean isOlder(T other) {
        if(this.getAge() > other.getAge()){
            return true;
        }else{
            return false;
        }
} 

// you can also simplify method:
public <T extends BaseClass> boolean isOlder(T other) {
        return this.getAge() > other.getAge();
} 

// This also might work for you (no generics at all)
public boolean isOlder(BaseClass other) {
        return this.getAge() > other.getAge();
} 

更多信息: https ://docs.oracle.com/javase/tutorial/java/generics/bounded.html


推荐阅读