我正在使用Processing库来用Java构建我的项目.我使用一个函数返回一个类型的对象PShape(我没有访问源代码).
我需要创建Shape类型的对象(我设计的类扩展PShape).
我该怎么做?
基本上我有:
PShape pShape = loadShape(filename);
Run Code Online (Sandbox Code Playgroud)
loadShape函数在哪里我无法访问源代码.
我想以某种方式做:
class Shape extends PShape {...}
Run Code Online (Sandbox Code Playgroud)
然后
Shape shape = (Shape) loadShape(filename);
Run Code Online (Sandbox Code Playgroud)
但它不会起作用,一旦loadShape()给我一个PShape,而不是一个Shape
我怎样才能loadShape退货Shape?
谢谢
如果loadShape()返回a PShape,则返回a PShape.你不能让它返回一个子类PShape.
最简单的方法是将Shape其复制PShape到新实例中:例如
Shape myLoadShape(String filename)
{
return new Shape(loadShape(filename));
// Assumes you have a `Shape(PShape)` constructor.
}
Run Code Online (Sandbox Code Playgroud)
或者可能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
}
}
Run Code Online (Sandbox Code Playgroud)