此方法簽名是否有效?'public Boolean isBikeTyreFlat()'是一個有效的JavaBeans方法簽名嗎?
public Boolean isBikeTyreFlat(){}
請注意,我想在這裏返回一個對象而不是原始的。
謝謝:)
此方法簽名是否有效?'public Boolean isBikeTyreFlat()'是一個有效的JavaBeans方法簽名嗎?
public Boolean isBikeTyreFlat(){}
請注意,我想在這裏返回一個對象而不是原始的。
謝謝:)
在JavaBeans的,用於boolean
吸氣方法可以是getXXX()
或isXXX()
。由於Boolean
不是原始類型,因此需要getXXX()
。 isXXX()
僅適用於布爾基元類型(謝謝@Kemoda)。
在嚴格的JavaBeans中,這是一個有效的名稱(請參閱@TheEliteGentleman的答案)。
但是,請確保你沒有做這樣的事情:
public class BikeTyre {
private boolean flat;
public Boolean isBikeTyreFlat() {
return flat;
}
}
不建議這樣做,因爲你的字段的名稱不匹配的方法名。一些框架允許向內部字段和Java Bean的getter/setter添加註釋;不匹配可能會混淆這些框架。另請注意,將類名添加到您的字段是不好的做法;你的方法應該是isFlat()
。
當然,這是完全合法:
public class Unicycle {
private boolean bikeTyreFlat;
public Boolean isBikeTyreFlat() {
return bikeTyreFlat;
}
}
但話又說回來,你真的模擬單輪腳踏車? ;-)
我不得不不同意this answer。我有同樣的問題,並寫了一個快速測試。
鑑於JavaBean作爲:
package example;
public class FooBean {
private Boolean published;
public void setPublished(Boolean published) {
this.published = published;
}
public Boolean isPublished() {
return published;
}
}
這看起來像一個主類:
package example;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
BeanInfo beanInfo = null;
try {
beanInfo = Introspector.getBeanInfo(FooBean.class);
} catch (IntrospectionException e) {
e.printStackTrace();
}
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for(PropertyDescriptor descriptor : propertyDescriptors){
System.out.println("descriptor: " + descriptor);
System.out.println("descriptor.getName(): " + descriptor.getName());
System.out.println("descriptor.getReadMethod(): " + descriptor.getReadMethod());
}
}
}
運行的主類的結果是:
descriptor: [email protected]
descriptor.getName(): class
descriptor.getReadMethod(): public final native java.lang.Class java.lang.Object.getClass()
descriptor: [email protected]
descriptor.getName(): published
descriptor.getReadMethod(): null
如果我改變FooBean.java
看起來像這樣:
package example;
public class FooBean {
private boolean published;
public void setPublished(boolean published) {
this.published = published;
}
public boolean isPublished() {
return published;
}
}
然後輸出結果爲:
descriptor: [email protected]
descriptor.getName(): class
descriptor.getReadMethod(): public final native java.lang.Class java.lang.Object.getClass()
descriptor: [email protected]
descriptor.getName(): published
descriptor.getReadMethod(): public boolean example.FooBean.isPublished()
這告訴我,它是一個有效的JavaBeans簽名,類型必須聲明一個原始的布爾值。
編輯 經過進一步的測試,似乎只是isXxx()的聲明的返回類型的方法必須是布爾值是JavaBean認識到它:
package example;
public class FooBean {
private Boolean published;
public void setPublished(Boolean published) {
this.published = published;
}
public boolean isPublished() {
return published;
}
}
結果:
descriptor: [email protected]
descriptor.getName(): class
descriptor.getReadMethod(): public final native java.lang.Class java.lang.Object.getClass()
descriptor: [email protected]
descriptor.getName(): published
descriptor.getReadMethod(): public boolean example.FooBean.isPublished()
你的「編輯」部分與第一條陳述相矛盾,第一條陳述說:「我不同意接受的答案。」 :-) – 2014-08-25 21:56:47
@BuhakeSindi我已經更新它來指代我指的實際答案:) – FGreg 2014-08-26 13:19:51
爲什麼你不試試在你的代碼中。 – RanRag 2012-04-17 09:36:23
非常有效。 – 2012-04-17 09:38:07
對不起......我知道這會起作用,但它是否對javabean命名標準有效? – Continuity8 2012-04-17 09:38:24