有Delphi的“with..do”Java等价物吗?
考虑这个随机对象:
Object Test of Class TestClass:
String Name;
Integer Age;
procedure setName(n);
function getName(): String;
在Delphi中,如果我们想轻松处理对象的许多属性和方法,我们可以这样做:
Test.Name = 'EASI';
Test.Age = 34;
Test.setName('Eduardo Alcantara');
ShowMessage(Test.getName);
。。。或者我们可以这样做:
with Test do
begin
Name = 'EASI';
Age = 32;
setName('Eduardo Alcântara');
ShowMessage(getName);
end
Java中是否有类似的结构,可以像Delphi中那样缩短语法
# 1 楼答案
不,Java中没有类似的构造
一种Java习惯用法是使用可链接/构建器式模式:
然而,这并不总是适用/合适的,需要类型本身的支持——主要是从setter方法返回接收方对象(即this)
请注意,对原始接收方/变量调用getName方法是为了避免在showMessage调用中隐藏副作用,并且上面示例中的每个Person方法仍然有一个显式接收方(这是“do..with”构造可以避免的)
有时使用的另一种方法是Double Brace Initialization——这个仅在
new
语句的上下文中工作,它创建了一个新的匿名内部类与上述模式相比,setter方法的优点是不需要修改;然而,Person对象的隐式接收器仅存在于双括号中
另见: