匿名类中的私有变量/方法?

Joh*_*ohn 8 java access-modifiers anonymous-class

我创建了一个匿名类,其中我声明了一些变量和方法.我的java老师告诉我要把这些私有化.我没有看到改变修饰符有什么不同,因为无论如何这些变量和方法对于匿名类是私有的,所以我更喜欢根本没有修饰符.谁是对的,什么更有意义?请参阅下面的示例代码,其中我选择"map"和"convert"的修饰符而不是将其设为私有.

Collections.sort(list, new Comparator<String>(){
  public int compare(String a, String b){
    return convert(a).compareTo(convert(b));
  }
  Map<String, String> map = new HashMap<String, String>();
  String convert(String s) {
    String u = map.get(s);
    if (u == null)
      map.put(s, u = s.toUpperCase());
    return u;
  }
});
Run Code Online (Sandbox Code Playgroud)

Bri*_*new 5

我很想把它们私有化,因为如果你重构代码并将匿名类作为标准类拉出来(例如,Intellij可以通过点击按钮来实现),拥有私有字段就是你真的想要.您不必去修改您的课程以符合您的标准.


Jon*_*onH 1

你的教授是对的。将所有类变量设为私有并通过属性公开它们(如果不是匿名的)。

一般经验法则是将成员数据(例如变量,包括 Map 对象)保持私有。

  • 向匿名类添加属性似乎没什么用处 (2认同)