V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fihserman123
V2EX  ›  Java

如果说简单的设计是一种美,那么 Java 的内部类设计岂不是真丑陋?

  •  
  •   fihserman123 · 2020-02-03 20:02:46 +08:00 · 3988 次点击
    这是一个创建于 842 天前的主题,其中的信息可能已经有所发展或是发生改变。
    16 条回复    2020-02-04 14:01:15 +08:00
    ech0x
        1
    ech0x  
       2020-02-03 20:08:20 +08:00 via iPhone
    前排吃瓜。
    micean
        2
    micean  
       2020-02-03 20:38:37 +08:00 via Android
    哪里丑了,总得给个理由吧
    lostberryzz
        3
    lostberryzz  
       2020-02-03 20:39:19 +08:00
    如果说复杂的设计是一种美,那么 Java 的内部类设计岂不是巧夺天工?
    KentY
        4
    KentY  
       2020-02-03 20:42:17 +08:00   ❤️ 1
    抛出新看法观点很正常, 起码说几个论据, 和怎么论证的吧?
    Buges
        5
    Buges  
       2020-02-03 20:52:58 +08:00 via Android   ❤️ 1
    C++更丑,“兼顾”了易用性,扩展性,性能,和历史遗留问题。简直就是缝合怪。
    zhx1991
        6
    zhx1991  
       2020-02-03 21:07:28 +08:00   ❤️ 1
    如果说 java 的设计是一种美, 那么 java 的设计岂不是很美?
    imn1
        7
    imn1  
       2020-02-03 21:08:27 +08:00   ❤️ 2
    非白即黑……
    为何中国的教育一直不教逻辑?
    easylee
        8
    easylee  
       2020-02-03 21:13:55 +08:00
    @imn1 #7 暗地里阶级划分、教育问题任重而道远啊。

    另外,看了不少 Java 代码,以及几个大版本的架构设计,我觉得 Java 的设计很强啊,没发现吗?
    easylee
        9
    easylee  
       2020-02-03 21:17:05 +08:00
    @easylee #8 接上:

    简单是一种美,对的,但是所谓的简单也是根据内部的高度抽象来的呀。

    Java 某种程度上以及某个年代上来说写法简单优雅,可以理解为美吧,但是你又吐槽人家内部丑陋......你去写一个更好的吧。
    wmhx
        10
    wmhx  
       2020-02-03 21:24:03 +08:00
    java 在设计模式和严谨性上说第一, 没意见吧.
    Harry
        11
    Harry  
       2020-02-03 23:21:32 +08:00   ❤️ 1
    @fihserman123

    且不说美丑。
    Java 的内部类设计有它自己的用处(而且挺好用还挺简洁的)。这个在日常的后端开发中(服务器)不容易看到,如果你接触一些类似 android 的开发,或者看下 android 开源的代码,你就会发现这么大的系统,把所有的类暴露出来是一种迷惑和污染。反而使用内部类,一个可以是逻辑内聚,达到封装的目的,另一个也不会暴露给其他 public interface 导致其他人需要看到这个接口的实现而并不需要用到。

    Effective Java 是一本非常不错的书,可以读一下。里边有 non static inner class 和 static inner class 的说明和讲解。
    GM
        12
    GM  
       2020-02-03 23:32:27 +08:00
    开局一个论点,网友全靠猜?
    janxin
        13
    janxin  
       2020-02-04 05:43:06 +08:00 via Android
    简单确实美,但不代表复杂一定不美…
    salamanderMH
        14
    salamanderMH  
       2020-02-04 09:04:10 +08:00
    Java 类设计挺好的
    fihserman123
        15
    fihserman123  
    OP
       2020-02-04 13:55:18 +08:00
    @Harry
    内部类有:inner class、nested class、又配合着各种不同的权限修饰( public、protected、default、private ),当然还有匿名内部类、局部内部类。相比较而言,内部接口逻辑就简单很多,必须是 public 且 static 的( nested class 和内部接口逻辑是差不多的)。
    说 Java 设计模式好的,的确,因为这容易让我们看懂代码,知道一个”get+类名"的组合就知道这是一个工厂方法了。可是,这另一方面,代码的堆叠太常见了。
    如果说优美,我自认为内部接口比内部类优美很多。
    fihserman123
        16
    fihserman123  
    OP
       2020-02-04 14:01:15 +08:00
    内部类的存在,我认为在于描述一种类之间的逻辑关系,或者说是具有 throwable 的特性。但是在 heap 中却不分内部类、外部类,本质实现上没有内外区别,Java 想提供一种安全的类间逻辑关系,但是这个逻辑却是显得过于复杂化了。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3961 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:25 · PVG 15:25 · LAX 00:25 · JFK 03:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.