【发布时间】:2014-12-29 13:17:30
【问题描述】:
也许我没有抓住重点,但来自 C# 背景,我看不出有任何理由使用 Java 的泛型...
在 C# 中,我有一个方法,它接受一个字符串并将其反序列化为一个对象...
public static Deserialize<T>(string source) {
// Use reflection to examine T and determine
// which properties I should be reading from
// the string. Create an instance of T,
// populate the properties and return it
}
我可以这样称呼:x.Deserialize<AnyClass>("String representation of AnyClass");
类型擦除似乎让这在 Java 中变得不可能?
我对泛型的下一个最常见用法是将内容存储在列表中,但由于我不能使用 List<int> 并且必须装箱才能使用 List<Integer>,所以当我可以使用 @987654325 时,它似乎是毫无意义的架空装箱/拆箱@。
所以...是泛型唯一真正的用途,比如
List<MyClass> MyClassList = new List<MyClass>
并进行一些编译时类型检查?如果是这样,考虑到变量名称清楚地表明了类型应该是什么,这似乎是多余的(至少只要我使用合理的命名约定)。
我不禁觉得我错过了什么......
【问题讨论】: