java - java代码抽象,泛型,这里的泛型java代码看不懂
问题描述
public abstract class BaseDataItem<V, T, ThisType extends BaseDataItem<V, T, ThisType>> implements DataItem<V, T> { }
public abstract class SingularDataItem<Value, T> extends BaseDataItem<Value, T, SingularDataItem<Value, T>> {
@Override
protected int buildHashCode(HashCodeBuilder builder) {
return builder.toHashCode();
}
@Override
protected boolean isEquivalent(SingularDataItem<Value, T> o) {
return true; // the parent class already verifies that the object is the same class
}
}
解决方案
好吧,我试过了,返回的输出是真的,这意味着无论我为类 Data 创建了多少不同的对象,它们都将始终相等,因此我不知道为什么要编写这样的代码,也许这段代码可以解释从使用此代码的域的角度来看。
public class Test {
public static void main(String[] args) {
SingularDataItem<String , String> singularDataItem = new Data("testing");
SingularDataItem<String , String> singularDataItem2 = new Data("testing2");
System.out.println(singularDataItem.isEquivalent(singularDataItem2));
}}
class Data extends SingularDataItem<String , String>{
private String name;
public Data(String name) {
this.name = name;
}
public String getName() {
return name;
}}
abstract class BaseDataItem<V, T, ThisType extends BaseDataItem<V, T, ThisType>> implements DataItem<V, T> {
int buildHashCode(HashCodeBuilder builder){
return builder.toHashCode();
}
boolean isEquivalent(SingularDataItem<V, T> o){return true;}}
abstract class SingularDataItem<Value, T> extends BaseDataItem<Value, T, SingularDataItem<Value, T>> {
@Override
protected int buildHashCode(HashCodeBuilder builder) {
return builder.toHashCode();
}
@Override
protected boolean isEquivalent(SingularDataItem<Value, T> o) {
return true; // the parent class already verifies that the object is the same class
}}
推荐阅读
- jmeter - 如何在另一个 http 请求的正文中使用 HTTP 请求的结果(zip 文件)?
- python - 为什么我会收到这些“警告:目标目录
已经存在。”当我点安装模块时? - pyspark - 进行数据转换时如何减少迭代时间?
- typescript - TS 如何选择错误的方法签名?
- python - 多个条件下的行之间的熊猫差异
- angular - 自定义 Angular Schematics:如何修改文件并在不同的位置/文件夹中创建文件
- sas - SAS ODS RTF - 将标题/脚注嵌入表格的最佳选择
- javascript - Discord.js ReferenceError:未定义味精
- r - 具有一致比例的ggplot颜色线为每条新线添加新颜色
- flutter - 未来的建设者 - 需要先构建上下文