V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ashamp
V2EX  ›  问与答

谁能给我翻译翻译到底什么是 tm 的泛型?!

  •  
  •   ashamp · 2015-07-04 20:07:10 +08:00 · 2830 次点击
    这是一个创建于 3416 天前的主题,其中的信息可能已经有所发展或是发生改变。
    太抽象的翻译了~
    101
        1
    101  
       2015-07-04 20:17:59 +08:00
    又是个跳入 Java 深坑的孩子,翻译不是很贴切就仿实例写代码就理解了
    acros
        2
    acros  
       2015-07-04 20:19:32 +08:00
    这个翻译不是挺贴切的吗?是说的Generic吧?
    otakustay
        3
    otakustay  
       2015-07-04 20:33:19 +08:00
    一个类可**泛**用于任何(也可以有限制)类**型**,具体使用的类型编译/运行时再确定
    crayygy
        4
    crayygy  
       2015-07-04 20:36:25 +08:00   ❤️ 1
    让我想起一个翻译:鲁棒性
    wwqgtxx
        5
    wwqgtxx  
       2015-07-04 21:33:51 +08:00 via Android
    @101 c#的泛型同样坑,到你实现一个IEnumable<T>接口的类就知道有多麻烦了
    IEnumable<T>继承自不带泛型的IEnumable
    所以你要实现一个带泛型一个不带泛型的同名方法,这两个方法还tmd的返回值一个是<T>一个是object,所以还不能直接重载…………
    总之都是泪呀,还不如Java的泛型,好用的多
    mahone3297
        6
    mahone3297  
       2015-07-04 21:48:08 +08:00
    和具体化,相对应的,就是泛化。。。
    mouhong
        7
    mouhong  
       2015-07-04 21:51:06 +08:00
    @wwqgtxx 不能直接重载是啥意思?
    Septembers
        8
    Septembers  
       2015-07-04 22:00:00 +08:00 via Android
    @mouhong 方法签名不匹配
    wwqgtxx
        9
    wwqgtxx  
       2015-07-04 22:38:39 +08:00 via Android
    @mouhong 你试试能不能这样重载?
    public String get() {return "x";}
    public int get(){return 0}
    mouhong
        10
    mouhong  
       2015-07-04 23:20:43 +08:00
    @wwqgtxx 你的两个 get 返回值不一样,C# 中返回值不是方法签名的一部分,不过为什么是这样,我也不是很清楚,貌似官方的说法是这会使 overload resolution 变得复杂 (就先当他们懒吧T_T)。但实现 IEnumerable<T> 接口你指的应该是返回类型的协变性吧,这个在 C# 中也不支持,究其原因,大概也是因为懒,一种权衡吧,嘿嘿,详情:

    http://stackoverflow.com/questions/7996127/the-return-type-of-the-members-on-an-interface-implementation-must-match-exactly/7996843#7996843

    http://stackoverflow.com/questions/5709034/does-c-sharp-support-return-type-covariance
    dallaslu
        11
    dallaslu  
       2015-07-05 00:05:18 +08:00   ❤️ 1
    「型」指的是类型,比如参数类型、返回值类型。那么「泛」应该怎么解释呢?

    域名解析有一个方式叫「泛域名解析」,意思是说所有符合 *.example.com 的子域名比如 v2ex-demo.example.com 都可以根据这条规则解析到同一个 IP 上。好处很明显,当有一天你要在这个服务器上加一个站点 java-ashmp.example.com 时,就不用再修改解析规则了。

    回到 Java,「泛型」的好处也很明显,当你在程序的「运行时」需要动态指定类中方法的参数或返回值类型时,直接在调用者代码里写就行了——而不用再修改那个支持泛型的类了。
    Smilecc
        12
    Smilecc  
       2015-07-05 09:02:30 +08:00
    我一直觉得这翻译挺好的啊。。
    tanywei
        13
    tanywei  
       2015-07-05 10:52:58 +08:00
    还是喜欢python的数据结构
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1010 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:50 · PVG 06:50 · LAX 14:50 · JFK 17:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.