2013-09-12 4 views
0

В последнее время я заметил кучу людей, которые делают такие вещи, как:Разница между возвращением объекта/примитивно и просто назвав его

class One { 
    public static final String anything = "Hi!"; 

    public static String getAnything(){ 
     return anything; 
    } 
} 

class Two { // This is not an inner class 
    System.out.println(One.getAnything()); 
} 

Vs

class One { 
    public static final String anything = "Hi!"; 
} 

class Two { 
    System.out.println(One.anything); 
} 

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

+0

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

ответ

3

Если anythingstatic final (как в вашем примере), то нет никакой разницы.

Однако использование метода getAnything() позволяет изменять функциональность без необходимости использования кода рефакторинга. Например, запись может быть добавлена ​​внутри реализации getAnything().

Если вы реализуете метод getAnything(), было бы обычным изменить видимость anything от public до private.

+1

Это просто, как пишет @Alison. В вызове метода есть немного накладных расходов, но вы можете изменить способ вычисления «ничего», не меняя код Java. Я также предпочитаю Getters и Setters, тем более что вы можете позволить Eclipse генерировать их для вас. – jboi

+0

Кроме того, использование getters/seters позволяет легко сделать переменную читаемой, но не доступной для записи (не особенно важно здесь, поскольку у него есть публичное поле) – Cruncher

0

ИМХО, нет никакой разницы. Они служат для этой же цели.

Но небольшая разница будет

public static String getAnything(){ 
     //Hey someone taking value of anything.Do something here. 
     return anything; 
    } 

Что не представляется возможным отследить, если вы используете

System.out.println(One.anything); 

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

Смежные вопросы