2012-11-13 2 views
1

단일 Java 객체에 대한 메소드 서명을 변경하는 올바른 방법은 무엇입니까? toString 메서드를 변경하려고한다고 가정합니다.단일 인스턴스의 Java 메소드 구현을 어떻게 변경합니까?

myObject.metaClass.toString = { pritln "hello world" } 

이 코드에는 문제가 있습니다. 객체를 다른 Java 컴파일 객체에 전달하면 원래 toString이 호출됩니다.

기타 solution은 래퍼 Object을 만듭니다.
1. 내가 작성 과정 제어 할 수
2. 객체가

을 인스턴스화 방법을 모른다 : 그것은 나에게


추가를 만족하지 않도록 그것은 원래 다른 클래스가

따라서이 문제를 해결하기 위해 그루비 방식이 없습니까? 유일한 해결책은 Java 래퍼 클래스를 만들고 모든 메서드를 래핑하고 하나를 변경하는 것입니다. 이것은 ...

답변

2

메타 클래스에 대한 변경 사항은 groovy에서만 볼 수 있습니다.

자바는 메타 클래스가 존재 모르고있다, 그래서 분명히

3

는 당신이 annoymous 서브 클래스를 사용할 수 그것에 의해 정의 된 대체 방법을 호출 할 수 없습니다? 그 단일 인스턴스에서 toString() 메서드를 재정의합니다.

MyObject myObject= new MyObject(){ 
    @Override 
    public String toString(){ 
     println "hello world" 
    } 
}; 
4

단일 메서드가 변경된 개체를 만들려면 "익명 클래스"를 사용하는 방법이 있습니다.

MyClass myObject = new MyClass() { 
    public String toString() { 
     ...implementation... 
    } 
} 
0

는 원본을 확장하는 래퍼 만들기 : 당신의 객체를 생성 할 때마다

public class wrapper extends myObject{ 
    public toString{ 
     System.out.println("hello world"); 
    } 
} 
+0

영업 이익은 그가 래퍼 클래스를 사용하지 않았다 말했다. – JavaKungFu

관련 문제