Java 在将方法调用重定向到包装类中的内部字段时,是否有一个与super等价的方法

Java 在将方法调用重定向到包装类中的内部字段时,是否有一个与super等价的方法,java,proxy,jvm,Java,Proxy,Jvm,假设我想创建一个类MyString,它是java.lang.String的包装器。我添加了一个名为reverse的新方法 public class MyString { private String text=null; public MyString(String foo){ text=foo; } public String reverse(){ // implementation omitted retur

假设我想创建一个类
MyString
,它是
java.lang.String
的包装器。我添加了一个名为
reverse
的新方法

public class MyString {
    private String text=null;

    public MyString(String foo){
        text=foo;
    }

    public String reverse(){
        // implementation omitted
        return reversedString;  
    }
}
现在,
String
是最终的。因此,我不能扩展它。让
MyString
支持
String
支持的所有方法的一种方法是提供包装器方法实现,例如方法
tocharray()


有没有一种方法可以将方法调用重定向到成员字段,而不必编写包装器实现的代码?类似于super的东西?

不确定我是否完全理解这个问题,但最终,如果您希望您的
MyString
具有与
String
相同的所有方法,那么在某种程度上,您的类还必须定义所有相同的方法。你真的绕不开这件事


您可能会想出一些简洁的方法,这样,对于每个方法,您就不必键入
返回text.blah()
,比这更优雅的东西;但是我看不出有任何方法可以避免在
MyString
中使用方法定义。

不,这不能直接完成

您可以定义一个包含所有java.lang.String方法(以及您的方法)的接口,并使用动态代理来实现它重定向到字符串实现(具有所有的负面影响)

可能您更适合使用类型转换
新的MyString(string).reverse()
不幸的是,Java没有或

当然,有大量的反向实现,例如从。它以程序化的方式实现:

String reversed = StringUtils.reverse(string);

(我认为您的reverse方法应该返回MyString而不是String,这样您就可以编写:
s.reverse().reverse()
)。

您不能这样做,因为您必须编写方法来公开它们以供使用。但是,例如,您可以使用Netbeans的“创建委托…”功能,只需单击鼠标即可获得所有委托方法。

谢谢。这肯定会奏效(尽管没有我希望的那么优雅):-)
String reversed = StringUtils.reverse(string);