Геттеры / сеттеры в Java
-
22-08-2019 - |
Вопрос
Я новичок в Java, но имею некоторый опыт работы с ООП с ActionScript 3, поэтому пытаюсь выполнить переход, полагаясь на то, что знаю.
В ActionScript 3 вы можете создавать геттеры и сеттеры, используя ключевые слова get и set, то есть вы создаете метод в классе и получаете доступ к данным через свойство экземпляра этого класса.Я могу показаться сложным, но это не так.Вот пример:
родовое словоИ я мог бы получить доступ к сгенерированному коду в объекте как:
родовое словоКак бы это сделать на Java?
Об открытых полях не может быть и речи. Я заметил, что существует соглашение об использовании get и set перед методами, с которым я согласен.
Например,
родовое словоЕсть ли в Java эквивалент средств получения / установки ActionScript 3, как в доступ к частному полю как к полю из экземпляра класса, но есть метод для реализации этого внутри класса?
Решение
Нет.Геттеры и сеттеры AS3 - это вещь ECMAScript.В Java вы застряли с функциями стиля getVal () и setVal () - нет никакого синтаксического сахара, чтобы упростить вам задачу.
Я думаю, что Eclipse может помочь в автоматическом создании подобных вещей ...
Другие советы
Ваш Java-код в порядке, за исключением того, что вы хотите сделать генерирующий кодовый код приватным .
В Java нет ключевых слов get и set , как в вашем примере AS3.Извините, это не может быть лучше того, чем вы уже занимаетесь.
Исправленный код:
родовое словоК сожалению, нет, в java нет эквивалентной поддержки на уровне языка.
Шаблоны get * и set *, однако, настолько укоренились в культуре Java, что вы найдете для них сильную поддержку IDE (например, eclipse сделает их за вас автоматически), и если вы работаете с чем-то, что используетязык выражений, сначала созданный для jsps (EL), затем вы сможете использовать нотацию свойств для доступа к геттерам и сеттерам.
Я бы подумал об отсутствии геттера или сеттера, поскольку в вашем случае они ничего не делают, кроме усложнения кода.Вот пример без геттеров и сеттеров.
родовое словоИМХО, не усложняйте ситуацию больше, чем нужно.Часто бывает, что добавление сложности страдает от You-Aint-Gonna-Need-It
Независимый от IDE способ - использовать Lombok , библиотеку на основе аннотаций, которая генерирует геттеры,установщики и даже equals()
и hashcode()
.Это делается для компилятора, но не в исходном файле, поэтому вам не нужно смотреть на методы, просто используйте их.
В Java единственный вариант, который у вас есть без раскрытия внутренней части вашего объекта, - это создать свои собственные геттеры и сеттеры, как в вашем примере.
По соглашению перед изменяемым полем добавляется код get
или set
.Итак, как и в вашем примере, поле name
будет иметь методы getName
и setName
в качестве соответствующих методов получения и установки соответственно.
Также перед добавлением сеттеров и геттеров было бы неплохо спросить себя, почему вы раскрываете внутренние данные рассматриваемого объекта.
Предлагаю вам прочитать эту статью -
http://www.javaworld.com/javaworld/jw-09-2003 / jw-0905-toolbox.html