这叫什么?
这是来自JBitTorrent API的Bits
类的构造函数。这完全有效:
public Bits and(Bits b){ /* something */ }
但是方法名称中有一个空格。那么这就叫了吗?我认为是“java multimethod”,但事实并非如此。
答案 0 :(得分:3)
它不是构造函数,它是常规的Java方法。
第一个Bits
是返回类型,and
是方法名称。
如果它是构造函数,它将没有返回类型,并且名称将是它正在构造的类的名称。
方法可能构建一个新的Bits
实例并将其返回,但它仍然是一种方法。
答案 1 :(得分:3)
它不是构造函数,方法名称中没有空格。
该方法名为and
,它以Bits
个对象作为参数,并返回Bits
个对象。
这是一种常规方法,因为没有特别的名称(从语言角度来看)。
这是一种常见的模式,通常用于不可变对象:不是修改调用该方法的对象,而是使用修改后的状态创建一个新对象(这也可以在可变对象上完成,但更常见于不可变的)。
答案 2 :(得分:1)
您认为在哪里可以看到方法名称中的空格?
public Bits and(Bits b){ //something }
这是名为public
的{{1}}方法,它返回一个and
对象,并以Bits
个对象作为参数(参数变量名为{{1} }})。
它不是构造函数,只是常规方法。
答案 3 :(得分:1)
但方法名称中有一个空格
不,没有。方法名称是“和”。 Bits
是返回类型!
答案 4 :(得分:1)
方法中没有空格,方法名称为“and”。
public
- 修饰符Bits
- 返回值and
- 方法名称Bits b
- Bits 答案 5 :(得分:1)
通常用于Builder pattern(例如StringBuilder),其中提供字段/操作以创建完全构造的对象。
public Bits and(Bits b) {...}
不是构造函数,而是需要Bits b
才能更改当前内部位(ANDed)状态的方法。
实施将产生这种效果。
public Bits and(Bits b) {
this.doAnd(b);
//Now that our internal bits are ANDed with bits B, return our changed state
return this;
}