可能是一个愚蠢的问题,但只是想问。我有一个Java类,有一些字段,它的getter和setter。
public class Parameters {
private String URL;
public String getURL() {
return URL;
}
public void setURL(String uRL) {
URL = uRL;
}
}
Checkstyle将给出错误
名称"URL"必须匹配模式" ^ [a - z] [a-zA-Z0-9] *美元’。
所以我改成了url
,用Eclipse生成getter和setter。
public class Parameters {
private String url;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
我希望方法名称为getURL
和setURL
。我手动更改方法名称是否更好,或者有其他方法?
注:如果我必须使用
搜索基于字段名的方法java.beans.BeanInfo
java.beans.IntrospectionException
java.beans.Introspector
java.beans.PropertyDescriptor
对于url
,它将只搜索getUrl
和setUrl
。
应该编写getter和setter。或者更好——让IDE自动生成它们。否则会破坏封装。
您可以选择使用http://projectlombok.org/,并使用注释像这样编写:
@Getter @Setter
private String name;
代码生成在编译时完成。
看看这个网站
编辑:
的例子:
public class Test {
protected double WIDTH;
public double getWidTh() {
return WIDTH;
}
public void setWidTh(double wIDTH) {
WIDTH = wIDTH;
}
public static void main(String []args){
Test t = new Test();
t.setWidTh(2);
Object c = t;
Class klazz = c.getClass();
try {
for (PropertyDescriptor propertyDescriptor : Introspector
.getBeanInfo(klazz).getPropertyDescriptors()) {
Method m = propertyDescriptor.getReadMethod();
if (m != null)
System.out.println(m.invoke(c));
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IntrospectionException e) {
e.printStackTrace();
}
}
}
是的,你必须手动完成,或者你可以将字段的名称更改为URL,但在这种情况下,你将不遵循Java命名约定