java - 为什么从接口(interface)执行方法时会将参数转换为 Object(或扩展 YourObject)?

标签 java generics types interface casting

我有一个界面

public interface GenericRepository<T extends GenericObject> {
    String add(T t);
}

我尝试按预期实现它

public class GenericMongoRepository<T extends GenericObject> 
implements GenericRepository{
@Override
public String add(T  t) {
  return null;
}

这是行不通的。该接口(interface)需要这样的实现。

public class GenericMongoRepository<T extends GenericObject> 
implements GenericRepository{
@Override
public String add(GenericObject  genericObject) {
  return null
}

最佳答案

当你实现一个接口(interface)时,你还需要传入 T,它取自实现(替换为类型)。

解决方法:

public class GenericMongoRepository<T extends GenericObject> 
implements GenericRepository<T>{
@Override
public String add(T genericObject) {
  return null;
}

关于java - 为什么从接口(interface)执行方法时会将参数转换为 Object(或扩展 YourObject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31760428/

相关文章:

java - 尝试解析 apache-commons-chains 的目录 XML 时出现 EmptyStackException

Java 泛型 : Comparing the class of Object o to <E>

C# 为什么其中一些使用委托(delegate)和泛型的方法没有启动?

types - 动态找出结构体内部内容的好方法是什么?

javascript - 如何在没有 '... 19 more ...' chop 的情况下使用 vs-code 提取大型类型?

java - Java 的 Object.hashCode() 方法的目的是什么?

java - 使用 String.join() 和 split() 方法替换字符串中的所有元音

java - Spring @Value ("${}") 通常为空

c# - 获取类型名称

Python SQLite 错误绑定(bind),带字符串的类型不受支持