如何为任何用户定义的类创建包装类
有人告诉我,如果是的话,我们可以为任何用户定义的类创建包装类,而不仅仅是为基元创建包装类!那么我们如何创建它,我不知道从哪里开始,请您为此目的提供任何演示代码。等待您的回复....
有人告诉我,如果是的话,我们可以为任何用户定义的类创建包装类,而不仅仅是为基元创建包装类!那么我们如何创建它,我不知道从哪里开始,请您为此目的提供任何演示代码。等待您的回复....
术语“包装”有时与封装的含义相同,其中对象或类型由类在其实现细节的内部使用,并且不将其公开给外部代码。但是,包装通常特指将一个类封装在另一个类中的操作,该类实现与包装类相同的接口,但稍微改变其行为或添加新功能(装饰器模式),或者外部类实现不同的接口,实质上是转换包装的类以使其与另一个程序兼容(适配器模式).这两种类型的包装几乎总是手动完成的,并且必须在编译时(通过编写代码)完成。
您还可以使用 在运行时为几乎任何对象生成动态代理。您可以阅读有关动态代理类的官方指南,以了解如何使用它。但是,您尚未提供任何用例,因此这可能不是您要查找的内容。代理通常用于保护对象或通过 RPC 委派给远程服务器,并且可能非常复杂。java.lang.reflect.Proxy.newProxyInstance(...)
创建包装器的示例代码:
import java.util.ArrayList;
import java.util.List;
class IntVal {
private int i;
public IntVal(int a) {
i = a;
}
public int getVal() {
return i;
}
public void setValue(int a) {
this.i = a;
}
public void increment() {
i++;
}
@Override
public String toString() {
return Integer.toString(i);
}
}
public class WrapperClass {
public static void main(String[] args) {
List list = new ArrayList();
for (int i = 0; i < 10; i++) {
list.add(new IntVal(i));
}
System.out.println(list);
for (int i = 0; i < list.size(); i++) {
((IntVal) list.get(i)).increment();
}
System.out.println(list);
}
}