假设我们有一个对象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()
从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兼容,安全和正确的方法是什么? 顺便说一句,有没有比我应该使用的