火山爆发后的Java

一些讽刺的雇主要求我改进Java,尽管我不是印度尼西亚总统,但我还是迅速冲刺,意外地困惑了半天。 我想要那样 一般原则是最大程度地简化而不丢失逻辑控制。 显然,为此,不仅有必要在语言中添加不存在的内容,而且还必须从语言中删除很多不存在的内容,以延续C--的良好传统。


  1. 能够从一个函数返回多个结果。
  2. 基本字段的默认值必须明确声明。 从语言中删除“ static”修饰符,为static(默认实例),可以通过引用键入的null进行访问。 将其全部称为“默认实例”。 字段使用“抽象”修饰符的可能性,这既意味着无法创建类的实例,又需要在类的后代中指定此字段的默认值。
  3. 对于“保护”,“默认”和“公共”字段,设置器和获取器由编译器自动生成,而不会自动生成可见的排序,但由于有重载的可能性,因此从语言中删除了“私有”,因为“字段”本身都将是“私有”而没有过载能力。 在第8段中添加“本地”-关于此内容。
  4. 从该类的所有“公共”字段自动生成公共接口,以及新的保护类型等。 接口对应于修饰符的字段。 类类型通过哈希码进行比较,哈希码将由字段名称,参数名称,类型和返回值生成,因为所有这些巧合的可能性可以忽略不计,并且可以在编译时通过警告进行检测。

    因此,不再需要这样的“接口”,仅“类”,“抽象”仅是禁止创建实例的指令。 有关多重继承,请参见下一个第5段。
  5. 为“扩展”添加合并规则。 显式指定所有冲突字段的祖先,这与方法是无法区分的,更多有关第8节的内容。因此,对象将继承代码并实现所有父类型。 由于合并而未完全保留的类型会从形式祖先中消失,留下代码,但在尝试滥用对象时会产生编译错误。
  6. 动态类型。 模板使用C语言,而不是基于Java的模板。 键入不会因此受到影响,因为动态类型不能直接在样本中使用,但是可以在使用基本类型或反射或模板的所有情况下使用,在这种情况下,通过直接将实例类型扩展为运行时来组织重新计划也很困难,因此禁止了限制。
  7. 子方法与Pascal中一样。
  8. 所有方法都是内部类的完整默认实例,并且与字段没有区别。 为此,类构造函数将返回一个值。 根据第2节“默认实例”,类的构造函数将是在编译时创建的默认方法的主体。 像Java 8一样,不再需要特殊的方法引用。方法引用将表示对象引用。

    方法调用和仅用于调用内部方法的临时对象的创建变得相同,所有这些都可以由编译器作为简单的方法调用进行优化。 另一方面,使用“ new”运算符创建“方法”,以供以后对其进行引用的操作,意味着创建“ class”的新实例。 直接通过方法名称将对函数的引用分配给字段,该方法名称不带方括号,函数值(带方括号和参数)。 在方法调用之间不会保存带有“ local”修饰符的字段。

    必须将具有不同参数集的所有相同方法分组到一个子类中,以便更好地填充外部类。 该子类的默认字段分别不是绝对静态的,而是相对于外部类而言静态的。 除非外部类本身是默认实例。
  9. 除了“ try”-“ catch”之外,还有方法,“ throws”标识调用方法的允许类型,“ throw”使goto在处理程序方法上,切断调用堆栈,并且处理程序方法本身没有不同,以通常的方式从它们返回,但是,就发生在以前的调用方法之一中。 因此,像try-catch一样,在最接近的层次结构级别调用处理程序。 因此,为了在出现异常的情况下跳过遵循某种方法的某些代码,您需要将此代码(以该特定方法开头)放入子方法类中,以在其中重载必要的处理程序。 简单地说,这种方法将大大缩短Java中实际项目的方法的时间。

    最后,在方法的最后添加权重,这样就无需额外的括号。
  10. 一个新的运行时运算符,用于对各种原语以及原始字段和String的数组进行加密,然后将其压缩在内存中,以便随后使用访问密钥对它们进行遍历,整个类遍历整个类。 要直接使用一种方法来解压,使用,打包,而不是挠头说“如何做得更好”。
  11. 数组仅在记录期间需要边界控制,而我将提供直接从内存读取而不控制数组边界的机会。 因此,在存在System.arraycopy的情况下,将在不牺牲性能的情况下监视数组范围。 由于大多数附加计算大多数是在记录过程中执行的,因此与它们相比,记录本身不需要花费很多时间。
  12. 为阻止程序同步提供其他基本替代方法是Thread类中最简单的方法,该方法将自定义消息发送到其他线程,并且您可以通过该方法从其他线程接收自定义消息。 另外,在传递给Thread的Runnable对象的“ run”方法中,需要显式调用中断线程的方法,并且没有编译错误。 另外,添加一种方法,该方法可在其他线程触发后从其他线程触发自定义Runnable事件,并在每次接收和发送消息时进行发送。 所有这些从根本上不会改变任何东西,但是在90%的情况下,它将简化面向线程的开发。 尤其是在急速发展的情况下,这是大多数实际情况。
  13. 实际上,内存中所有对象的图始终只有原始类型,数组或null,或者在其所有顶点都具有本机对象的链接。 可以将整个图形保存为任何文本形式的基本工具将非常有用。 大型原语数组可以单独存储,小型数组可以内联编码。 加上虚拟机版本,以及-我们可以在内存中还原这种结构。
  14. 一个有用的工具,用于根据指定的条件(通过简单SQL的类型考虑访问修饰符)根据指定的条件在对象图中搜索任何对象。 使用第1 ... 9段可以大大简化此任务。 这样的工具不仅可以简化对象的层次结构,而且可以组织各种测试和对允许值的控制,并尝试赶上Prolog。

Source: https://habr.com/ru/post/zh-CN439210/


All Articles