Обычно ли метод, начинающийся с "get", фактически устанавливает свойства?

Я был удивлен, узнав, что Android API позволяет нам изменять размеры объектов imageView, вызывая метод getLayoutParams(). Например:

myTimerBar.getLayoutParams().width = timeRemaining;

Не существует соответствующего метода setLayoutParams().

Является ли распространенным для методов, имеющих слово "get", возможность программистам "устанавливать" свойства? Я понимаю, что этот метод технически не является методом "получения", но он начинается со слова "получить".

3 ответа

Решение

getLayoutParams() возвращается ViewGroup.LayoutParams который имеет переменную экземпляра width это объявлено как public, а в Java вы можете получить доступ к общедоступной переменной экземпляра и установить для нее новое значение без метода setter.

Например:

public class Point
{
    public int x;
    public int y;
}
Point p = new Point();
p.x = 10;
p.y = p.x + 1;

Является ли распространенным для методов, имеющих слово "get", возможность программистам "устанавливать" свойства? Я понимаю, что этот метод технически не является методом "получения", но он начинается со слова "получить".

Это возвращает LayoutParams объект, связанный с View, Этот объект не имеет изменяемого состояния. Но View класс имеет setLayoutParams() так же, как и любой подкласс View, Вам придется создать новый LayoutParams установить.

В Android SDK есть setLayoutParams(), начиная с уровня API 1: http://developer.android.com/reference/android/view/View.html

Другие вопросы по тегам