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);*/
}
}
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);
}
}
# 1 楼答案
包装类包装类用于将基本数据包装或封装到其他类中的实例化对象
# 2 楼答案
术语“包装”有时与封装的意思相同,其中对象或类型由类内部使用,作为其实现细节的一部分,并且不向外部代码公开。然而,包装通常是指将一个类封装在另一个类中的行为,该类实现了与包装类相同的接口,但稍微改变了其行为或添加了新特性(Decorator Pattern),或者外部类实现了不同的接口,本质上转换包装的类以使其与另一个程序(Adapter Pattern)兼容。这两种类型的包装几乎都是手动完成的,必须在编译时完成(通过编写代码)
您还可以在运行时使用
java.lang.reflect.Proxy.newProxyInstance(...)
为几乎任何对象生成动态代理。你可以阅读关于Dynamic Proxy Classes的官方指南来学习如何使用它。然而,您还没有给出任何用例,所以这可能不是您想要的。代理通常用于保护对象或通过RPC委托给远程服务器,并且可能非常复杂# 3 楼答案
创建包装器的示例代码: