Что не так с внутренним классом, не используя внешний класс в Java?

Вы можете дисквалифицировать «одинаковость», если количество элементов не совпадает или если один из элементов отсутствует в массиве другого. Вот простая функция, которая сработала для меня.

    function isSame(arr1,arr2) {
        var same=true;
        for(var i=0;i < arr1.length;i++) {
            if(!~jQuery.inArray(arr1[i],arr2) || arr1.length!=arr2.length){
                same=false;
                }
            }
        return same;
        }
5
задан user128807 15 July 2009 в 19:23
поделиться

5 ответов

Если внутренний класс может использоваться только внешним классом, но при этом внутренний класс не нуждается в ссылке на внешний класс, то вы можете сделать его частным статическим .

Если внутренний класс известен кому-то, кроме внешнего, то он также может быть классом верхнего уровня сам по себе.

7
ответ дан 18 December 2019 в 05:40
поделиться

Looks like an Enerjy Error:

// Incorrect
class Log {
  // Position never uses the enclosing Log instance,
  // so it should be static
  class Position {
    private int line;
    private int column;
    Position(int line, int column) {
      this.line = line;
      this.column = column;
    }
  }
}

A nested class that does not use any instance variables or methods from any of its outer classes can be declared static.
This reduces the dependency between the two classes, which enhances readability and maintenance.

// Correct
class Log {
  static class Position {
    private int line;
    private int column;
    Position(int line, int column) {
      this.line = line;
      this.column = column;
    }
  }
}
11
ответ дан 18 December 2019 в 05:40
поделиться

If it's not making any reference to the outer class, it might as well be a full-on, regular class. Since it isn't dependent on the outer class, it can stand on its own. I suspect that's the reason for the "error".

7
ответ дан 18 December 2019 в 05:40
поделиться

Нестатический внутренний класс имеет неявную ссылку на экземпляр своего внешнего класса. Эта скрытая ссылка может задержать (или даже предотвратить) сборку мусора во внешнем классе и создать проблемы с сериализацией. Поэтому вы должны использовать нестатические внутренние классы только тогда, когда они вам нужны. Легко забыть объявить класс статическим, поэтому анализ кода предупредит вас, когда он не нужен.

5
ответ дан 18 December 2019 в 05:40
поделиться

The whole point of the inner class is that it has access to the outer class. If you're not actually using the outer class, just make it a regular, full-blown class.

1
ответ дан 18 December 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: