擦除不是没有类型了,而是编译期擦除成Object了,因此声明T类型会变成Object,那么任何类的实例都可以被Object接收,自然就可以运行。而new T()是必须要有运行时类型信息的,否则运行时不知道实例的类型,没有办法创建实例,举例来说,C#的泛型是真泛型保留运行时类型的,那么就可以实现new T()、typeof(T)(等价于T.class)这种操作。
作者:陆萌萌
链接:“https://www.zhihu.com/questio...”
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。