类型参数String隐藏类型String

类型参数String隐藏类型String

本文介绍了Java泛型 - 类型参数String隐藏类型String的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的界面中:

public <T> Result query(T query)

在我的第一个子类中:

public <HashMap> Result query(HashMap queryMap)

在我的第二个子类中:

public <String> Result query(String queryStr)

第一个子类根本没有编译警告,而第二个子类有:
类型参数String是否隐藏String类型?我理解我的参数是由泛型类型隐藏的。但是我想知道究竟发生了什么?

1st subclass has no compilation warning at all while 2nd subclass has:The type parameter String is hiding the type String? I understand my parameter is hidden by the generics type. But I want to understand underneath what exactly happened?

推荐答案

它认为你正在尝试创建一个类型参数 - 一个 variable - 其名称为 String 。我怀疑你的第一个子类根本不导入 java.util.HashMap

It thinks you're trying to create a type parameter -- a variable -- whose name is String. I suspect your first subclass simply doesn't import java.util.HashMap.

无论如何,如果 T 接口的类型参数 - 可能应该是 - 然后你不应该包含 < String> 在子类中。它应该只是

In any event, if T is a type parameter of your interface -- which it probably should be -- then you shouldn't be including the <String> in the subclasses at all. It should just be

public interface Interface<T> {
  public Result query(T query);
}

public class Subclass implements Interface<String> {
  ...
  public Result query(String queryStr) {
    ...
  }
}

这篇关于Java泛型 - 类型参数String隐藏类型String的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 06:10