动态代理,要扩展String的Trim()方法
希望使用动态代理扩展String的Trim()方法,实现去掉一个字符串的所有空格。例如“ afaf fa fsdf”
把字符串中间的空格去掉。求思路??
------解决方案--------------------String是被final修饰的类,不能用cglib实现子类代理,又没有父接口,所以无论用jdk的实习接口代理。所以也许我知识有限,真没想出什么方法实现string的动态代理。如果只是lz上面的需求,完全没有用动态代理的方法去实现。随便写个工具类很容易实现的。lz好好理理动态代理技术的用途吧!为了扩展一个方法,复制一整个对象,这未免太过浪费
------解决方案--------------------这个问题很简单啊! 你去看看 StringUtils 这类啊. 里面的方法会让你很吃惊的...
------解决方案--------------------对String类本身改造操作没希望了,可以考虑在get某个String属性的时候,做个拦截处理,返回的内容为去空格的字符串:str.replaceAll("\\s","");
------解决方案--------------------
字符串的set方法也同样
------解决方案--------------------写了个基于JDK的代理demo:
接口类User:
public interface User
{
public void setName(String name);
public String getName();
}
接口实现类UserImpl:
public class UserImpl
implements User
{
private String name;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String toString()
{
return "User name is:" + name;
}
}
代理类UserProxy:
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class UserProxy