Java泛型方法和作为参数的方法对象有什么区别?

Java泛型方法和作为参数的方法对象有什么区别?,java,generics,Java,Generics,泛型方法和只接受对象的方法之间有什么优势?它如何确保类型安全 例如:当使用下面代码片段中提到的任何一种形式定义我的接口时,会有什么不同 public interface MyInterface { public <MT> String myMethod(MT t); } 在我看来,泛型方法只有在我们围绕它键入绑定时才有优势。。例如,类型参数应为可序列化类,如。否则就没有意义了。。寻找更多的洞察力 public interface MyInterface { public &

泛型方法和只接受对象的方法之间有什么优势?它如何确保类型安全

例如:当使用下面代码片段中提到的任何一种形式定义我的接口时,会有什么不同

public interface MyInterface {
  public <MT> String myMethod(MT t);
}
在我看来,泛型方法只有在我们围绕它键入绑定时才有优势。。例如,类型参数应为可序列化类,如。否则就没有意义了。。寻找更多的洞察力

public interface MyInterface {
  public <MT extends Serializable> String myMethod(MT t);
}
公共接口MyInterface{
公共字符串方法(MT);
}

方法通常是泛型的,以确保两个参数彼此兼容,或返回一个类型取决于方法泛型类型的值

比如说,

public static <T> void sort(List<T> list, Comparator<? super T> c)
在以下示例中,返回值的类型取决于方法的泛型类型:

public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
你必须这么做

Integer min = (Integer) Collections.min(intList);
如果将代码更改为

Long min = (Long) Collections.min(intList);

泛型方法限制可以传递给该方法的参数类型。这带来了更具内聚性的代码,限制了它可以处理的输入,因此可以合理地假设它具有某些特性

例如

public interface MyInterface {
    public [MT extends BaseClass] String myMethod(MT t);
}

在这里,您总是知道所有适用于基类的方法都适用于此方法中的t。

从编译/运行时的角度来看,也可以看到它的含义

如果使用泛型,编译器将在编译过程中生成必要的代码,而不会对相关对象执行运行时强制转换和/或类型检查


另一方面,如果您仅将对象类用作泛型类型,可能最终会得到更少的代码(因为编译器不会生成任何代码),但您需要自己处理运行时类型安全和强制转换。

更正了我的问题。出于某种原因,我无法在代码中添加“”。
字符串是最终的,所以这个示例可能不是最好的。冷静点,我在一个小检查之前单击了提交,在那里我添加了一些代码。编辑。。我明白你在说什么。。。我的问题最后也是这么说的。。。我在问,这是否是拥有泛型方法的唯一原因?撇开意图不谈,我不确定会返回什么类型的
[MT extensed BaseClass]String myMethod
。但这一切都是在良好的精神状态下出现的在这种情况下,您可以只使用
公共字符串myMethod(基类t)
public static Comparable T min(Collection coll)
Integer min = (Integer) Collections.min(intList);
Long min = (Long) Collections.min(intList);
public interface MyInterface {
    public [MT extends BaseClass] String myMethod(MT t);
}