答案 0 :(得分:13)
术语“包装”有时与封装相同,其中对象或类型在内部由类作为其实现细节的一部分使用,并且不会将其暴露给外部代码。但是,换行通常特指将类封装在另一个类中的行为,该类实现与包装类相同的相同接口,但稍微改变其行为或添加新功能(Decorator Pattern),或者外部类实现了一个不同的接口,实质上是转换包装类以使其与另一个程序(Adapter Pattern)兼容。这两种类型的包装几乎总是手动完成,必须在编译时完成(通过编写代码)。
您还可以使用java.lang.reflect.Proxy.newProxyInstance(...)
在运行时为几乎任何对象生成动态代理。您可以阅读Dynamic Proxy Classes上的官方指南,了解如何使用它。但是,您尚未提供任何用例,因此这可能不是您正在寻找的。代理通常保留用于保护对象或通过RPC委托给远程服务器,并且可能非常复杂。
答案 1 :(得分:0)
wrapper class-wrapper类是用于将原始数据包装或封装到其他类中的实例化对象的类
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 :(得分:0)
用于创建包装器的示例代码:
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);
}
}