如何为任何用户定义的类创建包装类

2022-09-03 07:11:28

有人告诉我,如果是的话,我们可以为任何用户定义的类创建包装类,而不仅仅是为基元创建包装类!那么我们如何创建它,我不知道从哪里开始,请您为此目的提供任何演示代码。等待您的回复....


答案 1

术语“包装”有时与封装的含义相同,其中对象或类型由类在其实现细节的内部使用,并且不将其公开给外部代码。但是,包装通常特指将一个类封装在另一个类中的操作,该类实现与包装类相同的接口,但稍微改变其行为或添加新功能(装饰器模式),或者外部类实现不同的接口,实质上是转换包装的类以使其与另一个程序兼容(适配器模式).这两种类型的包装几乎总是手动完成的,并且必须在编译时(通过编写代码)完成。

您还可以使用 在运行时为几乎任何对象生成动态代理。您可以阅读有关动态代理类的官方指南,以了解如何使用它。但是,您尚未提供任何用例,因此这可能不是您要查找的内容。代理通常用于保护对象或通过 RPC 委派给远程服务器,并且可能非常复杂。java.lang.reflect.Proxy.newProxyInstance(...)


答案 2

创建包装器的示例代码:

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);

    }
}

推荐