java中的泛型和方法
我有一个问题要用java解决。 有一种方法,它以一个对象作为参数。在这个方法中,有一个if语句。但是我不能使用if语句。我们必须在该类中使用T泛型,所以我想比较两个相同类型的对象,但另一方面,他不想得到getAge()方法。 也许你们有一些想法?这里有一些代码java中的泛型和方法,java,generics,Java,Generics,我有一个问题要用java解决。 有一种方法,它以一个对象作为参数。在这个方法中,有一个if语句。但是我不能使用if语句。我们必须在该类中使用T泛型,所以我想比较两个相同类型的对象,但另一方面,他不想得到getAge()方法。 也许你们有一些想法?这里有一些代码 public boolean isOlder(T other) { if(this.getAge() > other.getAge()){ return true; }else
public boolean isOlder(T other) {
if(this.getAge() > other.getAge()){
return true;
}else{
return false;
}
}
除非另有明确说明,否则泛型类型应该是
对象
的子对象,该对象没有getAge()
方法
您可能想做的是:
//只要我们有地方
公共类基类{
...
public int getAge()。。。。
...
}
//您可以这样编写方法:
公共布尔isOlder(T其他){
if(this.getAge()>other.getAge()){
返回true;
}否则{
返回false;
}
}
//您还可以简化方法:
公共布尔isOlder(T其他){
返回此.getAge()>other.getAge();
}
//这也可能适用于您(根本没有泛型)
公共布尔isOlder(基类其他){
返回此.getAge()>other.getAge();
}
更多信息:
(如何)类型T的对象保证提供getAge方法?在这里使用泛型类型可能没有意义。请添加一些上下文,以了解什么是类定义以及调用方法的确切内容。我怀疑需要像
T extensed someObject
这样的内容,其中someObject
具有getAge()
method@jr593更像是T扩展了SomeClass
:)@floxbr是的,也许这没有意义,但我们的教授希望我们这样做,所以。。。我必须这么做。谢谢大家。这对我帮助很大。我不知道,我可以扩展到被覆盖的类。你确定当你声明它为class other
时,other.getAge()
会编译吗;否则返回false可以简化为返回条件
@Pshemo-是的,只使用T other
会更安全,我已经更新了评论。与isOlder(基类other)相比有什么优势?T没有在任何地方使用…@floxbr我看不出这段代码有什么好处。不过,作者明确询问了泛型,所以我认为从更大的角度来看,泛型会有优势。我添加了一个选项isOlder(BaseClass-other)
,以获得更好的图片。