Java “什么是”呢;“远距离行动”;在这个JEP里?

Java “什么是”呢;“远距离行动”;在这个JEP里?,java,type-inference,Java,Type Inference,我说的是。文中多次提到“远距离行动”;例如: 排除没有初始值设定项的局部变量可以消除“远距离操作”推断错误,并且在典型程序中只排除一小部分局部变量 或: 同样,在推断类型时,我们也可以考虑所有赋值,而不仅仅是初始值设定项;虽然这会进一步增加本地人利用此功能的百分比,但也会增加“远距离行动”错误的风险 我理解JEP的大部分内容,但那一部分我想不通 这里所说的“远距离行动”是什么意思?来自维基百科的文章 在计算机科学中,远距离行动是一种反模式(a) 可识别的常见错误)在程序的某一部分中的行为 根据难

我说的是。文中多次提到“远距离行动”;例如:

排除没有初始值设定项的局部变量可以消除“远距离操作”推断错误,并且在典型程序中只排除一小部分局部变量

或:

同样,在推断类型时,我们也可以考虑所有赋值,而不仅仅是初始值设定项;虽然这会进一步增加本地人利用此功能的百分比,但也会增加“远距离行动”错误的风险

我理解JEP的大部分内容,但那一部分我想不通


这里所说的“远距离行动”是什么意思?

来自维基百科的文章

在计算机科学中,远距离行动是一种反模式(a) 可识别的常见错误)在程序的某一部分中的行为 根据难以识别或不可能识别的操作,差异很大 在节目的另一部分。如何避免这些问题 与远距离作用相关的是适当的设计,可避免 全局变量并以受控和局部方式更改数据,或 使用带有引用的纯函数式编程风格 透明度

这个术语是基于物理学中远距离作用的概念, 这可能指的是一个允许对象在不使用 中介粒子,如胶子。特别是阿尔伯特·爱因斯坦 在量子力学中,这种效应被称为“瞬间的恐怖行为” 距离”

在本例中,它指的是没有初始值设定项表达式的变量,如下所示:

var list;

// many lines of code

list = new ArrayList<String>();
var列表;
//许多行代码
列表=新的ArrayList();
虽然可以从代码后面的赋值表达式推断变量类型,但这样做会使代码遭受“远距离操作”所导致的问题:对于代码的读者来说,局部变量的类型根本不明显,这可能会导致错误