有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

有人告诉我,我们可以为任何用户定义的类创建包装器类,而不是只为原语创建包装器类,如果是的话!我不知道从哪里开始创建这个演示,那么我就不知道从哪里开始。 等待您的回复


共 (3) 个答案

  1. # 1 楼答案

    包装类包装类用于将基本数据包装或封装到其他类中的实例化对象

    public class wrapperdemo {
    
        public static void main(String[] args) {
            //integer case
            //primitive type
            int i=20;
            //reference type
            //(explicit declaration of the primitive to reference object)
            Integer iref =new Integer(i);
            //boxing(changing primitive to reference variable)
            System.out.println(iref);
            //unboxing(fetching primitive out of reference variable)
            int j=iref.intValue();
            System.out.println(j);  
    
            int k = 40;
            //(implicit declaration of primitive to refernce object)
            Integer kref=k;                  //boxing
            System.out.println(kref);
            int k1=kref.intValue();
            System.out.println(k1);         //unboxing
    
            //character case
            //explicit conversion of char primitive to refernec object
            char ch='D';
            Character cref=new Character(ch);   //boxing
            System.out.print(cref);
            /*char ch1=cref.charValue();          //unboxing
            System.out.println(ch1);*/
    
            //implicit conversion
            char c='S';
            Character ccref=c;                 //boxing
            System.out.print(ccref);
            /*char cc1=ccref.charValue();
            System.out.println(cc1);*/
            }
    }
    
  2. # 2 楼答案

    术语“包装”有时与封装的意思相同,其中对象或类型由类内部使用,作为其实现细节的一部分,并且不向外部代码公开。然而,包装通常是指将一个类封装在另一个类中的行为,该类实现了与包装类相同的接口,但稍微改变了其行为或添加了新特性(Decorator Pattern),或者外部类实现了不同的接口,本质上转换包装的类以使其与另一个程序(Adapter Pattern)兼容。这两种类型的包装几乎都是手动完成的,必须在编译时完成(通过编写代码)

    您还可以在运行时使用java.lang.reflect.Proxy.newProxyInstance(...)为几乎任何对象生成动态代理。你可以阅读关于Dynamic Proxy Classes的官方指南来学习如何使用它。然而,您还没有给出任何用例,所以这可能不是您想要的。代理通常用于保护对象或通过RPC委托给远程服务器,并且可能非常复杂

  3. # 3 楼答案

    创建包装器的示例代码:

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