为正确的getter和setter设置字段名为URL会导致Checkstyle错误



可能是一个愚蠢的问题,但只是想问。我有一个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;
    }
}

我希望方法名称为getURLsetURL我手动更改方法名称是否更好,或者有其他方法?

注:如果我必须使用

搜索基于字段名的方法
java.beans.BeanInfo
java.beans.IntrospectionException
java.beans.Introspector
java.beans.PropertyDescriptor

对于url,它将只搜索getUrlsetUrl

应该编写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命名约定

最新更新