자바에서 왔고 인트로 스펙 션을 사용하여 객체의 인스턴스 변수를 '설정'할 수 있는지 알고 싶습니다. 예를 들어인트로 검사를 통해 메소드가 읽기 - 쓰기, 읽기 전용 또는 쓰기 전용인지 어떻게 알 수 있습니까?
, 나는 두 개의 인스턴스 변수, first_attribute
및 second_attribute
다음과 같은 클래스 선언이있는 경우 :
class SomeClass
attr_accessor :first_attribute
attr_reader :second_attribute
def initialize()
# ...
end
end
내가 인스턴스 방법을 얻을 수 있도록하려면 아마도 SomeClass.instance_methods
를 호출하고 알을하는 이러한 인스턴스 메소드 중 읽기/쓰기 대 읽기 전용입니다. 내가 루비에서이 작업을 수행하려면 어떻게
PropertyDescriptor[] properties = PropertyUtils.GetPropertyDescriptors(SomeClass);
for (prop : properties) {
if (prop.getWriteMethod() != null) {
// I can set this one!
}
}
: 나는이 작업을 수행 할 수 있습니다 자바에서
?
좋은 소식 : attr_accessor 또는 attr_reader 뒤에 세미콜론이 필요하지 않습니다. –
매우 비슷한 질문입니다 : http://stackoverflow.com/questions/4466541/is-there-a-better-way-to-get-the-public-properties-of-a-ruby-object –