参数隐藏了类型

Tej*_*shi 1 java generics interface

我有一个界面:

public interface Handler {
public <T> boolean shouldProcess(final T obj);
Run Code Online (Sandbox Code Playgroud)

和实施:

public class SampleHandler implements Handler {
@Override
public <Long> boolean shouldProcess(final Long date) {
 return <some comparison>;
}
Run Code Online (Sandbox Code Playgroud)

我得到"类型参数Long隐藏类型长".我得到这个的原因是什么?

jac*_*obm 6

因为你没有T用具体类型进行实例化Long; 你实际上是在声明一个新的类型变量Long,它与常规的Longs具有相同的名称,因而会影响它们.我怀疑你的意思是:

public interface Handler<T> {
  public boolean shouldProcess(final T obj);
}

public class SimpleHandler implements Handler<Long> {
  @Override
  public boolean shouldProcess(final Long date) {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)