如何在Java中修剪对象的某些字段?

假设我们有一个对象obj类型Object,从而System.out.println(obj)产生{a=Some text, b=Some

more text, c=Even more text}

现在,我们要创建一个新的对象obj2,这只是{a=Some text}(即场bc来自被修剪obj)。所以我们定义一个类A如下:

class A {

String a;

}

然后我们初始化obj2如下:

A obj2 = (A) obj

不幸的是,执行此操作时出现运行时错误。

我们如何obj2如上所述定义?

回答:

假设你有三个字段f1,f2,f3class 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

回到顶部