К любителям Java? Никогда толком не любил выносить код в static методы, делал это обычно, если ну никак без этого. А тут задумался и никак не могу найти правильный ответ на, кажется мне, достаточно легкий вопрос. Есть ли смысл (по ресурсам, быстродействию или ?) в преобразовании:public class A { private final int a; private final Map map; public A(int a) { this.a = a; this.map = new HashMap(); } public int calcSomthing() { int b = 0; for (int i : map.values()) if (i == a) b++; return b; } } вpublic class A { // ... public int getA() { return a; } public Collection getValues() { return map.values(); } public static int calcSomthing(A obj) { int b = 0; for (int i : obj.getValues()) if (i == obj.getA()) b++; return b; } } Если учитывать, что объектов много, скажем тысяч 50. Или смыл будет только, если, выносить в static те методы, которые изначально не обращается напрямую к переменным класса, а используют только другие методы класса?
Да, в данном случае есть смысл выносить метод calcSomthing в static метод. При обращении к коллекции map и переменной a через методы getA() и getValues() происходит обращение к переменным класса через геттеры, что, в принципе, не является плохой практикой.
Однако, когда вы рассматриваете ситуацию, когда объектов класса A может быть много (50 тысяч), использование static метода calcSomthing() позволит избежать создания объектов A и их хранение в памяти на длительное время. Вместо этого, вы сможете передавать только необходимые параметры для вычислений и получать результат, не загружая память лишней информацией.
Таким образом, вынос статического метода имеет смысл, если он не требует доступа к переменным объекта напрямую и может быть использован для работы с большим количеством объектов без необходимости хранения их в памяти.
Да, в данном случае есть смысл выносить метод calcSomthing в static метод. При обращении к коллекции map и переменной a через методы getA() и getValues() происходит обращение к переменным класса через геттеры, что, в принципе, не является плохой практикой.
Однако, когда вы рассматриваете ситуацию, когда объектов класса A может быть много (50 тысяч), использование static метода calcSomthing() позволит избежать создания объектов A и их хранение в памяти на длительное время. Вместо этого, вы сможете передавать только необходимые параметры для вычислений и получать результат, не загружая память лишней информацией.
Таким образом, вынос статического метода имеет смысл, если он не требует доступа к переменным объекта напрямую и может быть использован для работы с большим количеством объектов без необходимости хранения их в памяти.