如何在Java中修剪对象的某些字段?
假设我们有一个对象obj
类型Object
,从而System.out.println(obj)
产生{a=Some text, b=Some
more text, c=Even more text}。
现在,我们要创建一个新的对象obj2
,这只是{a=Some text}
(即场b
和c
来自被修剪obj
)。所以我们定义一个类A
如下:
class A { String a;
}
然后我们初始化obj2
如下:
A obj2 = (A) obj
。
不幸的是,执行此操作时出现运行时错误。
我们如何obj2
如上所述定义?
回答:
假设你有三个字段f1,f2,f3
中class A
创建一个新class B
的字段f1
声明一个方法class A
是这样
public B getTrimmedObject()
例如 设置f1并返回B对象
Other way : use composition over inheritance
.B将成为一个成员,你可以简单地从A取得乙In this
case split fields between A and B and avoid duplication。
f1将成为B的一部分,而B,f2,f3将成为A的一部分。构造函数将通过B来设置f1值,并且f2,f3会使用常规初始化进行设置
示例代码:
public class A{ private B b;
private String f2;
private String f3;
public A(String f1,String f2,String f3){
b = new B(f1);
this.f2 = f2;
this.f3 = f3;
System.out.println("In A->B:"+getB().getF1()+":A:f2:"+f2+":A:f3:"+f3);
}
public B getB(){
return this.b;
}
public static void main(String args[]){
if (args.length < 3) {
System.out.println("Usage: java A str1 str2 str3");
return;
}
A a = new A(args[0],args[1],args[2]);
}
}
class B{
private String f1;
public B(String f1){
this.f1 = f1;
}
public String getF1(){
return this.f1;
}
}
java A apple banana camel
In A->B:apple:A:f2:banana:A:f3:camel
以上是 如何在Java中修剪对象的某些字段? 的全部内容, 来源链接: utcz.com/qa/412729.html