如何在Java中为现有对象添加方法?

Gus*_*pes 1 java inheritance

我正在使用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

谢谢

Joh*_*136 7

如果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)