初始化一个类,如果它在构造函数中有一个接口作为参数?

时间:2017-06-14 14:21:33

标签: java constructor interface superclass super

有一个叫做TrianglePictureFilter的类,它有一个以下构造函数:

public TrianglePictureFilter(IPointGenerator pointGenerator) {
        super(pointGenerator);
    }

IPointGenerator是一个界面:

import java.awt.Point;

/**
 * Point generator interface, providing points for generating geometric primitives.
 */
public interface IPointGenerator {
    /**
     * Generates the next (random) point.
     * 
     * @return a new point
     */
    public Point nextPoint();
}

我想在另一个类中使用TrianglePictureFilter的一个方法,我已经导入了它,但我不知道如何初始化它,或者更准确地说如何在构造函数中初始化参数。有人可以帮我吗?

4 个答案:

答案 0 :(得分:0)

所以,如果你还没有实现IPointGenerator课程,你可以这样做:

public class TrianglePictureFilter implements IPointGenerator {

    public Point nextPoint() {
        // Return your random point.
    }

}

我不确定这究竟是你要求的,但是要使用这段代码,就会这么简单:

TrianglePictureFilter filter = new TrianglePictureFilter();
Point randomPoint = filter.nextPoint();

这是您正在寻找的行为吗?如果没有,您可能不想使用interface

答案 1 :(得分:0)

对象必须继承IPointGenerator接口,如下所示:

类AClass:IPointerGenerator {

 public Point nextPoint()
 {
       //do some action here to return a point

 }

}

//完成后

AClass = new AClass(); //可以传递给该构造函数。这应该足以让你入门。

答案 2 :(得分:0)

您可以在java 8中使用默认关键字。

答案 3 :(得分:0)

实例化类时,可以使用匿名类声明。新的TrianglePictureFilter(新的IPointGenerator {public Point newPoint {// do something}});