Reflection을 사용해도 JavaScript와 유사한 프로토 타이핑이 가능합니까? 원래의 비 사기성 메서드를 모두 래퍼 클래스에 연결하지 않고 하나 또는 두 개의 메서드로 기능을 확장하기 위해 다른 개체 내부에 객체를 래핑 할 수 있습니까? 아니면 extends
을 얻을 수 있습니까?확장 대신 Java에서 프로토 타이핑
0
A
답변
0
Java에서이 작업을 수행 할 수 있다고 생각하지 않습니다. 당신은 당신이 확장 방법을 찾고 있다면 metaclasses
String.metaClass.world = {
return delegate + " world!"
}
println "Hello".world()
1
를 사용하지만 그루비 수, 당신은 Xtend을 시도 할 수 있습니다. Xtend는 Java 코드로 컴파일되고 상용구 코드를 제거하는 언어입니다.
다음 텍스트는 Xtend Docs for extensions 도난되어
필드를 확장 키워드를 추가하면, 로컬 변수 또는 매개 변수 선언 그 인스턴스 메소드 확장 방법이된다.
클래스 Person에 특정 레이어 기능을 추가한다고 가정 해 보겠습니다. 당신이 서블릿과 같은 클래스에 있고 일부 영속성 메커니즘을 사용하여 Person을 유지하려고한다고 가정 해 보겠습니다. Person이 공통 인터페이스 Entity를 구현한다고 가정 해 봅시다. 당신은
interface EntityPersistence {
public save(Entity e);
public update(Entity e);
public delete(Entity e);
}
다음과 같은 인터페이스
을 그리고 수이 같은 (공장 또는 의존성 주입 또는 무엇도를 통해) 해당 유형의 인스턴스를 획득 한 경우 : 당신은 절약 할 수 있습니다class MyServlet {
extension EntityPersistence ep = Factory.get(typeof(EntityPersistence))
...
}
, 갱신과 같은 실체를 삭제합니다
val Person person = ...
person.save // calls ep.save(person)
person.name = 'Horst'
person.update // calls ep.update(person)
person.delete // calls ep.delete(person)
관련 문제
- 1. 프로토 타이핑
- 2. 프로토 타이핑 "인수"
- 3. WPF 빠른 프로토 타이핑.
- 4. SML의 프로토 타이핑 기능
- 5. C++ 클래스 프로토 타이핑
- 6. 아마존 EC2 프로토 타이핑
- 7. 플래시 프로토 타이핑?
- 8. 아마존 Ec2 프로토 타이핑
- 9. 자바에서 프로토 타이핑
- 10. 시각 테마 프로토 타이핑
- 11. 신속한 프로토 타이핑 Twitter 어플리케이션?
- 12. 자바에서 함수 지정으로 프로토 타이핑
- 13. 프로토 타이핑 입력 유형 = 파일
- 14. 모듈 패턴을 사용한 JavaScript 클래스 프로토 타이핑
- 15. 파이어 폭스의 셀레늄 Xpath 경로 프로토 타이핑
- 16. 파이썬 3 프로젝트 초기화/프로토 타이핑
- 17. JS : 프로토 타이핑 - 올바른 인스턴스 속성에 액세스하십시오.
- 18. JavaScript 기본 유형의 프로토 타이핑, 권장하지 않습니까?
- 19. 플렉스를 사용하는 iPad 응용 프로그램 프로토 타이핑
- 20. Google지도를 통한 비행 경로 프로토 타이핑
- 21. 프로토 타이핑 중 IO Monad 탈출
- 22. C 함수 프로토 타이핑 및 .set 지시문
- 23. 자바 스크립트 프로토 타이핑 기능 범위
- 24. Ipad GUI Windows에서 실행되는 프로토 타이핑 도구
- 25. 이상한 프로토 타이핑 오류 : CPP의 및 헤더
- 26. C에서 여러 함수 정의, 프로토 타이핑
- 27. 자바에서 프로토 타이핑 및 oops 구현 이해
- 28. 프로토 타입에서 프로토 타입의 개인 변수 정의하기 (어린이와 다른 프로토 타이핑 트릭 사이에서 공유)
- 29. 프로토 타이핑 날짜 선택기 : 다른 날짜/시간 형식의 문제
- 30. 타이핑 중에 자동 확장 텍스트 상자
난 당신이'클래스를 extend' 또는 어쩌면 [실내 장식]에 싸서 수 있다고 생각을 (http://en.wikipedia.org/wiki/Decorator_pattern) –
당신이 할 수있는 동적 프록시 사용 y API ('java.lang.reflect.Proxy') 또는'cglib'과 같은 라이브러리를 사용하면 무엇을 하려는지 성취 할 수 있습니다. 그러나 모든 경우에'JavaScript'처럼 쉽지는 않을 것입니다. 'Java'의 리플렉션은 항상 프로토 타입 프로그래밍 세계에 익숙했을 때 큰 고통이었습니다! – Vadim
나는 그 질문에 답을 넣을 수 있다고 생각합니다. –