我打算启动JEP / JSR,以将替代访问运算符引入Java语言规范。我已经确定了该提案的外观,现在我想收集有关该提案的反馈(例如,如果我是第999位提出这一建议的人)。我最好在实际开始提案之前进行此操作。但是,在openJDK或Java Community Process周围似乎没有论坛或委员会。至少我找不到任何东西。但是,我确实找到了一个#openjdk IRC频道,但是除了人们进出外,那里似乎没有任何交流。
如果我想采用侵入性最小的方式将自己的想法传达给其他人,我会选择哪种方式?除了实际启动JSR并等待主动反馈之外,没有别的选择吗?
除了实际的问题 ,因为有人问确切的想法是什么:
Java编程语言允许链接表达式 为了表示操作流程 在较大的表达式中,并简化对“深层”值的访问。
String fieldText = tableProvider.getTable(tableKey).getRow(rowKey).getField(columnKey).text;
但是,如果
'.'
访问器尝试访问无效对象,则 抛出NullPointerException,使任何未经检查的访问都具有风险。 即使这种情况的后备仅仅是null
或静态原始值,开发人员 需要显式处理所有可能的NullPointer场景。或者,他们 通常可以捕获NullPointerException
,这需要 返回值,将其存储到外部作用域中定义的变量中try-catch
块,因此以后可以在try-catch
语句之外访问它。但是,这也 捕获任何访问的方法中抛出的NullPointerExceptions
可能不是故意的。为避免这种情况,建议使用新的访问器,该访问器将中止解析 链接表达式的形式,以防访问器访问空值 对象,而是回退到
null
或指定的默认值。
String fieldText = tableProvider.getTable(tableKey)°getRow(rowKey)°getField(columnKey)°text;
int i = tableProvider.getTable(tableKey)°getRow(rowKey)°getField(columnKey)°index ?: (-1);
在此示例中,如果有任何调用方法(getTable,getRow或 getField)返回
null
,整个链接表达式将终止 并返回null
(或-1
),而不是抛出NullPointerException。
以上是我撰写的普通JEP / JSR的动机部分。
°
只是任何运算符的占位符,不会引起任意解释。实际的草稿还指定了一堆非目标,其中包括
- 不必在预计
null
的地方处理null
。- 弃用NullPointerException。
- 通常替换为“。”访问器。
- 捕获已引发的NullPointerExceptions。
- 通常将Optional类替换为返回类型。
编辑: 我所建议的概念似乎已经成为kotlin的一部分(其中包括),但包含两个功能:“安全导航操作员”和“ elvis操作员”。前者是我要关注的重点。
答案 0 :(得分:2)
JEP 1说:
预计典型的新提案将以非正式讨论的想法开始,然后在特定小组内进行讨论,然后作为JEP起草以供进一步审核和评论,然后由该小组的负责人批准,然后相关区域负责人,然后提交给OpenJDK负责人接受。通常,讨论过程将通过电子邮件进行,但是复审会议对于特别大或有争议的建议可能很有用。
因此,基本上,该想法应通过电子邮件进行讨论(通常这意味着在邮件列表中)。 Java mailing lists的各个主题很大。也许您在那里找到与您的提案相关的小组。
我认为大多数语言更改都是由the compiler group赞助的,因此他们的邮件列表可能是一个很好的起点,以获取有关在哪里讨论甚至在那里引发讨论的进一步指导。