Java 如何像显示其他对象的数组一样显示对象数组
我有 及Java 如何像显示其他对象的数组一样显示对象数组,java,Java,我有 及 我只能使用fobjects进行操作,因此我既不能更改ForeighObject的结构,也不能更改someMethod。如何重写ForeighObject.toString(例如)将其传递给someMethod,而不复制元素?我可以创建一些适配器类,它可以“present”ForeighObject来只覆盖一个方法吗?我不太清楚你的意思,但我猜someMethod在给定对象数组的元素上调用toString 如果是这种情况,则可以使用包含预期的toString方法的ForeighObjec
我只能使用fobjects进行操作,因此我既不能更改
ForeighObject
的结构,也不能更改someMethod
。如何重写ForeighObject.toString
(例如)将其传递给someMethod
,而不复制元素?我可以创建一些适配器类,它可以“present”ForeighObject
来只覆盖一个方法吗?我不太清楚你的意思,但我猜someMethod
在给定对象数组的元素上调用toString
如果是这种情况,则可以使用包含预期的toString
方法的ForeighObject
的包装子类包装foobjects
的每个元素
e、 g
请注意,如果someMethod还依赖于包装实例的其他方法/属性的行为,那么您需要重写这些方法,以便它们按预期工作。您说您不能更改
ForeighObject
的结构,但是您至少可以看到源代码吗?如果是这样,它可能有助于创建一个子类,该子类能够从ForeighObject
实例初始化自身。或者,ForeighObject
类是否有一个构造函数,该构造函数将另一个ForeighObject
作为参数来克隆它?是的,我用这种方式解决了它(除了使用合成)。但是我想避免这种情况:for(ForeighObject:fObjects){fobjectsWrapped.add(newforeighobjectwrapper(ob));}
class ForeighObject {...}
void someMethod(Object[]) {...}
ForeighObject[] fobjects = SomeStorage.getObjects();
//Subclass which wraps a ForeighObject instance..
class ForeighObjectWrapper extends ForeighObject {
ForeighObject wrapped;
ForeighObjectWrapper(ForeighObject toWrap){
super(/* get values from toWrap */);
this.wrapped = toWrap;
}
//Add the custom behaviour..
public String toString(){
return "Some custom behaviour: " + wrapped.toString();
}
}
ForeighObject[] fobjects = SomeStorage.getObjects(); //as before..
ForeighObject[] fobjectsWrapped = new ForeighObject[fobjects.length];
for(ForeighObject ob : fObjects){
fobjectsWrapped.add(new ForeighObjectWrapper(ob));
}
//then call someMethod on fobjectsWrapped instead of fobjects..
someMethod(fobjectsWrapped); //will invoke custom behaviour..