我正在使用Processing库来用Java构建我的项目。我使用一个函数返回一个travis.yml
类型的对象(我无权访问源代码)。
我需要创建Shape类型的对象(我设计的类扩展PShape
)。
我该怎么做?
基本上我有:
PShape
PShape pShape = loadShape(filename);
是一个函数,我无法访问源代码。
我想以某种方式做:
loadShape
然后
class Shape extends PShape {...}
但是一旦Shape shape = (Shape) loadShape(filename);
给我loadShape()
而不是PShape
如何让Shape
返回loadShape
?
谢谢
答案 0 :(得分:5)
如果loadShape()
返回PShape
,则返回PShape
。你不能让它返回PShape
的子类。
最简单的方法是Shape
将PShape
复制到新实例中:
例如
Shape myLoadShape(String filename)
{
return new Shape(loadShape(filename));
// Assumes you have a `Shape(PShape)` constructor.
}
或者Shape
可能不是子类,但它包含PShape
数据成员。
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
}
}