2017-06-14 93 views
0

有一个名为TrianglePictureFilter类,其具有下面的构造:初始化一个类,如果它在其构造函数中有一个Interface作为参数?

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的方法之一在另一个类中,我已经导入了它,但我不知道如何初始化它,或者更确切地说,如何在构造函数中初始化参数。有人可以帮助我吗?

+0

TrianglePictureFilter应该得到之前已经初始化的pointGenerator。这只是一个简单的多态使用 - 用接口保存实例。 – OferP

回答

0

所以,如果你还没有实现你的IPointGenerator类,你会做这样的:

public class TrianglePictureFilter implements IPointGenerator { 

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

} 

我不知道,如果这你问什么了,但使用此代码,它将如此简单:

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

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

0

一个目的必须继承IPointGenerator接口像这样:

类ACLASS:IPointerGenerator {

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

} 

}

//一旦做到这一点

ACLASS =新ACLASS (); //可以传入该构造函数。这应该足以让你开始。

0

您可以使用默认关键字在Java 8

0

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

相关问题