Никогда толком не любил выносить код в static методы, делал это обычно, если ну никак без этого. А тут задумался и никак не могу найти правильный ответ на, кажется мне, достаточно легкий вопрос.
Есть ли смысл (по ресурсам, быстродействию или ?) в преобразовании:
public class A
{
private final int a;
private final Map<Integer, Integer> map;
public A(int a)
{
this.a = a;
this.map = new HashMap<Integer, Integer>();
}
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<Integer> 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 те методы, которые изначально не обращается напрямую к переменным класса, а используют только другие методы класса?