我正在解析一个XML文件,其中我想要成为不可变的字段之一,ID,必须在创建对象后设置.如果ID!= null,我应该将它设置为null,并在setID()方法中抛出异常吗?
编辑:我正在解析XML文件,并在开始时创建一个对象,其字段和对象使用XML文件中的信息填充.我希望能够在创建根对象后设置ID,它应该是不可变的.
编辑:将"最终"更改为"不可变",因为这真的是我在语义上的意思.(抱歉:()
考虑这个随机对象:
Object Test of Class TestClass:
String Name;
Integer Age;
procedure setName(n);
function getName(): String;
Run Code Online (Sandbox Code Playgroud)
在Delphi中,如果我们想要使用对象的许多属性和方法轻松工作,我们可以这样做:
Test.Name = 'EASI';
Test.Age = 34;
Test.setName('Eduardo Alcantara');
ShowMessage(Test.getName);
Run Code Online (Sandbox Code Playgroud)
......或者我们可以这样做:
with Test do
begin
Name = 'EASI';
Age = 32;
setName('Eduardo Alcântara');
ShowMessage(getName);
end
Run Code Online (Sandbox Code Playgroud)
在Java中是否有类似的结构,我们可以在Delphi中缩短语法?
我已经看到一些API的设计方式必须使用它们如下面的代码
Class.doThis("...").doThat("...").....
Run Code Online (Sandbox Code Playgroud)
例如,HTTPCommon(Fluent API)可用作:
Request.Get("http://somehost/")
.connectTimeout(1000)
.socketTimeout(1000)
.execute().returnContent().asString();
Run Code Online (Sandbox Code Playgroud)
石英计划可用作:
JobDetail job = newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build();
Run Code Online (Sandbox Code Playgroud)
SimpleCatptch可用作:
Captcha captcha = new Captcha.Builder(200, 50)
.addText()
.addBackground()
.addNoise()
.gimp()
.addBorder()
Run Code Online (Sandbox Code Playgroud)
这种API设计的名称是什么?这样的设计好吗?
我知道很多次都会问这个问题,但我只是想澄清一下这个问题.构建器模式可以替换工厂模式.
是构建器模式逐步创建并返回复杂对象,这也可以在工厂模式中完成.
我在这个博客中遇到了一种非常不寻常的方法来构建一个类的对象:http: //marchwicki.pl/blog/2010/11/building-a-pojo-in-an-elegant-way/.这是一个很好的方法来做到这一点.有什么好处?
此代码初始化一个新的EventBuilder对象并在该对象上设置值.为什么最后需要.build()?
tracker.send(new HitBuilders.EventBuilder()
.setCategory("Achievement")
.setAction("Unlocked")
.setLabel("5 Dragons Rescued")
.setValue(1)
.build());
Run Code Online (Sandbox Code Playgroud) 我在使用某些Java时遇到问题,如何在Java中提供默认参数值?例如我在C ++中有这个
DVD(int i, string t, int y, string d="Unknown"): Items(i,t,y),director(d){}
在Java中,我尝试
public Dvd(int i, String t,int y, String d="Unknown"){
super(i,t,y);
director = d;
}
Run Code Online (Sandbox Code Playgroud)
无法建立。那么我该如何提供默认值呢?
在我的主要测试课程中,我尝试给出3个参数,分别为4,但这也失败了。我如何解决这个问题?