Java 如何更有效地向对象添加多个特性
我一直在玩弄Java,我设置了一个JButton:Java 如何更有效地向对象添加多个特性,java,object,properties,Java,Object,Properties,我一直在玩弄Java,我设置了一个JButton: JButton操作符=新JButton 当我尝试为JButton操作符设置属性时,它会起作用: operator.setFont(新字体(“黑板”,Font.PLAIN,30)) 然而,当我试图设置多个属性(这是我想要做的),它会抛出一个错误-当我这样做的时候 Dimension d = new Dimension(200, 200); operator.setFont(new Font("Chalkboard", Font.PLAIN, 30
JButton操作符=新JButton代码>
当我尝试为JButton操作符设置属性时,它会起作用:
operator.setFont(新字体(“黑板”,Font.PLAIN,30))代码>
然而,当我试图设置多个属性(这是我想要做的),它会抛出一个错误-当我这样做的时候
Dimension d = new Dimension(200, 200);
operator.setFont(new Font("Chalkboard", Font.PLAIN, 30))
.setPreferredSize(d)
.setBackground(Color.RED);
// Error: "Cannot invoke preferredSize(Dimension) on the primitive type void"
如何准确设置对象运算符的多个属性?我不想这样做-
operator.setFont(new Font("Chalkboard"), Font.PLAIN, 30));
operator.setPreferredSize(d);
operator.setBackground(Color.RED);
因为如果我想为对象设置20个属性(例如,在本例中是一个JButton),那么反复编写它将非常乏味
operator.setProperty1("test");
operator.setProperty2("test");
operator.setProperty3("test");
operator.setProperty4("test");
operator.setProperty5("test"); // too much work lol
如果set
方法不返回对象本身,则无法链接setter。对于签名类似于void setSomething(objectsomething)
的任何set方法,都会出现“cannotinvoke…on void”错误
您所指的类型更多地用于构建器模式
public class SomeObject {
private String name;
private String colour;
public SomeObject name(String name) {
this.name = name;
return this;
}
public SomeObject colour(String colour) {
this.colour = colour;
return this;
}
}
在本例中,您可以使用SomeObject
like
SomeObject o = new SomeObject().name("A name").colour("red");
在您提供的示例中,如果各种setProperty
方法都是void
方法,则必须按照问题中显示的方式执行;因此,在您的情况下,是的,有20个不同的操作符.setProperty
。。。这是必要的
这可能需要做很多工作,但比一个有20个参数的构造函数要轻松。如果set
方法本身不返回对象,则无法链接setter。对于签名类似于void setSomething(objectsomething)
的任何set方法,都会出现“cannotinvoke…on void”错误
您所指的类型更多地用于构建器模式
public class SomeObject {
private String name;
private String colour;
public SomeObject name(String name) {
this.name = name;
return this;
}
public SomeObject colour(String colour) {
this.colour = colour;
return this;
}
}
在本例中,您可以使用SomeObject
like
SomeObject o = new SomeObject().name("A name").colour("red");
在您提供的示例中,如果各种setProperty
方法都是void
方法,则必须按照问题中显示的方式执行;因此,在您的情况下,是的,有20个不同的操作符.setProperty
。。。这是必要的
这可能需要做很多工作,但比一个有20个参数的构造函数要轻松。那么,有没有更有效的方法来设置对象的多个属性?在您的特定情况下,没有。我更新了答案,提供了更多细节。罗伯特·C·马丁的《干净的代码》是一本值得一读的好书。谢谢你的建议。那么,有没有更有效的方法来设置对象的多个属性呢?在你的情况下,没有。我更新了答案,提供了更多的细节。罗伯特·C·马丁的《干净的代码》是一本值得一读的好书。谢谢你的推荐。