【问题标题】:What problems or benefits would be associated with a "static this" keyword?与“静态 this”关键字相关的问题或好处是什么?
【发布时间】:2023-04-06 17:41:01
【问题描述】:

我想到的是类似于“this”关键字,但在类级别,即

class Example {
    public static void main(String[] args) {
        assert Example.class == thisclass.class
    }
}

其中“thisclass”是返回当前类的关键字,就像“this”返回当前实例一样。

我可以看到一些有用的地方(例如,停止常见日志记录习惯中的剪切和粘贴错误),但我也可以看到一些潜在问题(如何处理子类等)。

我认为有充分的理由不在 Java 中包含这个概念,但它们是什么?此外,是否可以使用 Groovy 元编程来做这种事情?

【问题讨论】:

  • 停止复制和粘贴错误的最佳方法是不要复制和粘贴。
  • 同意,但在某些情况下复制和粘贴是合适的。声明一个记录器就是其中之一,但我想你可以在特定情况下使用 log4e 或类似的。

标签: java groovy theory


【解决方案1】:

groovy 具有您所说的“this”语义。在静态上下文中,“this”指的是方法所在的类。

查看http://groovy.codehaus.org/Differences+from+Java 并搜索“此关键字”。

很明显,Java 没有在这方面效仿,可能是因为最终它只是“groovy”的一小部分风味。当然没有任何必要。

【讨论】:

  • 差异页面并没有让它太明显......但很高兴知道它已经可用。我正在考虑更多地了解 Groovy,因此那里的任何知识都会派上用场。
  • Java 没有“追随”Groovy,因为 Java 语言比 Groovy 早 很多 年。
  • @stephen,当然,但 Java 仍在不断发展是我的观点。
  • 不顾一切地借用新语言的特性并不是 Java 的传统。设计人员仅在有充分理由时才扩展语言。
  • @stephen,是的。就像我在回答中所说的那样,它并不完全是破坏交易的功能......
【解决方案2】:

在 C++ 中曾经有一种将当前类类型定义为 This 的做法。我试过了,真的没有发现任何惊人的好处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多