java - java中的泛型和方法
问题描述
我有一个问题要在 java 中解决。有一种方法,它以对象为参数。在该方法中,有一个 if 语句。但我不能使用 if 语句。我们必须在那个类中使用 T 泛型,所以我想比较 2 个相同类型的对象,但另一方面,他不想获得 getAge() 方法。也许你们有一些想法?这是一些代码。
public boolean isOlder(T other) {
if(this.getAge() > other.getAge()){
return true;
}else{
return false;
}
}
解决方案
除非另有明确说明,否则泛型类型应该是 的子类型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
推荐阅读
- azure-devops-migration-tools - FieldMergeMap - 将两列合二为一
- javascript - 如何围绕未折叠的文本制作卡片形状?
- javascript - 如何使用此图像上的颜色蒙版简单地替换颜色然后保存?以 RGBA 通道为例
- flutter - 我有一个关于定义在颤动中移动页面的路线的问题
- gnuplot - Octave 一直说 gnuplot 不可用
- bookdown - Bookdown 未合并,导致隐式链接出现问题
- r - 如何使用 R 中的 xyz 值表制作曲面图
- jenkins - 如何使用 HTML 发布者插件在文件夹路径内发布 html 报告?
- css - 如何使用 CSS 平滑滚动来补偿固定标题?
- python - 在 C++ 中嵌入 python 脚本