内省java_Java内省 – 奇怪的行为
下面的代碼是一個(gè)很容易重現(xiàn)問題的小例子.所以我有一個(gè)類型為String的變量,在其上設(shè)置一個(gè)默認(rèn)值.我有3種方法:
吸氣劑
>設(shè)定者
>方便的方法,將字符串轉(zhuǎn)換為布爾值
內(nèi)部回調(diào)并不返回getMethod和setter作為writeMethod的getter.而是將isTest()方法作為readMethod返回.設(shè)定器是空的.
從文檔中我了解到,如果類型是一個(gè)布爾值,那么“is”方法的優(yōu)先級(jí)高于get,但是類型是String,所以甚至找不到“is-xxx”方法是沒有意義的.
public class Test {
public class Arguments {
private String test = Boolean.toString(true);
public boolean isTest() {
return Boolean.parseBoolean(test);
}
public String getTest() {
return test;
}
public void setTest(String test) {
this.test = test;
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IntrospectionException {
BeanInfo info = Introspector.getBeanInfo(Arguments.class);
System.out.println("Getter: " + info.getPropertyDescriptors()[1].getReadMethod());
System.out.println("Setter: " + info.getPropertyDescriptors()[1].getWriteMethod());
PropertyDescriptor descr = new PropertyDescriptor("test",Arguments.class);
System.out.println("T");
}
}
有沒有人有這方面的見解?
附加信息:
>訂單不會(huì)改變結(jié)果. isTest()方法總是被看作readMethod
>如果我簡(jiǎn)單地將isTest()重命名為bsTest(),它將getter和setter選擇為readMethod和writeMethod.所以它與“is-xxx”有關(guān).
總結(jié)
以上是生活随笔為你收集整理的内省java_Java内省 – 奇怪的行为的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java snychronized_Ja
- 下一篇: java 的tree_Java Tree