考虑这个随机对象:
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中缩短语法?
答案 0 :(得分:7)
不,Java中有 no 类似的构造。
一个Java习惯用法是使用可链接/构建器式模式:
Person person = new Person()
.setName("Eduardo Alcântara")
.setAge(32);
showMessage(person.getName());
然而,这并不总是适用/适当的,并且需要类型本身的支持 - 主要是从setter方法返回接收器对象(即this)。
请注意,对原始接收器/变量调用getName方法以避免在showMessage调用中掩盖副作用,并且上例中的每个Person方法仍然具有显式接收器(这就是“做...用“构造可以避免”。
有时使用的另一种方法是Double Brace Initialization - 此仅在new
语句的上下文中工作,并创建一个新的匿名内部类。
优于上述模式的优点是不需要修改setter方法;但是,Person对象的隐式接收器仅存在于双括号内。
Person person = new Person() {{
setName("Eduardo Alcântara");
setAge(32);
}};
showMessage(person.getName());
另见: