当前位置: 首页 > 面试题库 >

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

宗政财
2023-03-14
问题内容

假设我们有一个对象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()

从A设置B的必填字段。

例如 设置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中的字符? 例如 j 应该是 “乔\吉尔” j 应该是 “ \ joe \ jill \” 等等 问题答案: Apache Commons 有一个很棒的StringUtils类(org.apache.commons.lang.StringUtils)。其中有一种方法可以满足您的需求。 我强烈建议无论如何都要使用Apache Commons,尤其是Collections和

  • 问题内容: 我在Java中有一个具有值的字符串变量: 我希望我的最终字符串包含值: 我怎样才能做到这一点?我是Java编程语言的新手。 谢谢, 问题答案: 您可以使用:

  • 如果标题听起来很模糊,我很抱歉。 我有个目标- 还有这些物品的清单- 我想通过合并具有相同帐户ID的对象来操作这个列表,方法是将vat字段和总计费用字段相加,前提是它们也具有相同的发票日期。 如果两个对象具有相同的帐户ID但不同的发票日期,则它们不应合并。

  • 问题内容: 我有一个StringBuilder对象,需要修剪(即,从任一端删除所有空白字符/ u0020及以下)。 我似乎找不到在字符串生成器中可以做到这一点的方法。 这是我现在正在做的事情: 这恰好给出了所需的输出,但是它需要分配两个字符串,而不是一个。当字符串仍在StringBuilder中时,有没有更有效的方法来修剪字符串? 问题答案: 您不应使用deleteCharAt方法。 正如鲍里斯指

  • 问题内容: JDK的String.trim()方法非常幼稚,仅删除ascii控制字符。 Apache Commons的StringUtils.strip()稍好一些,但使用了JDK的Character.isWhitespace(),后者无法将不间断的空格识别为whitespace。 那么,用Java修剪字符串的最完整,与Unicode兼容,安全和正确的方法是什么? 顺便说一句,有没有比我应该使用的