我正在使用处理库来用Java构建项目。我使用的函数会向我返回PShape
类型的对象(我无权访问源代码)。
我需要使该对象的类型为Shape(我设计的扩展PShape
的类)。
我该怎么做?
基本上我有:
PShape pShape = loadShape(filename);
其中
loadShape
是函数,我无权访问源代码。我想以某种方式做:
class Shape extends PShape {...}
接着
Shape shape = (Shape) loadShape(filename);
但这行不通,一旦
loadShape()
给我一个PShape
,而不是Shape
如何使
loadShape
返回Shape
?谢谢
最佳答案
如果loadShape()
返回PShape
,则返回PShape
。您不能使其返回PShape
的子类。
最简单的方法是将Shape
复制到新实例中:
例如
Shape myLoadShape(String filename)
{
return new Shape(loadShape(filename));
// Assumes you have a `Shape(PShape)` constructor.
}
也许
PShape
不是子类,但是它包含Shape
数据成员。class Shape
{
// No one picked up my C++ syntax goof ;-)
protected PShape pshape;
// Using a constructor is just one way to do it.
// A factory pattern may work or even just empty constructor and a
// load() method.
public Shape(String filename)
{
pshape = loadShape(filename);
// Add any Shape specific setup
}
}