构造函数参数中的泛型

雷斯特林

我知道这是一个非常愚蠢的问题,因为我曾经知道这样的东西。但是我现在很难完成这项工作。我有一个类的构造函数,应该得到一个ArrayList,该数组填充有实现我称为CollisionObserver的接口的对象。这是我的构造函数负责人:

public Cursor(GL gl, LibraryFinger finger, Vector direction, float radius, 
       int index, ArrayList<T extends CollisionObserver> observerList)

谁能告诉我在哪里犯了大错误?我也尝试ArrayList<CollisionObserver>过,但这也行不通,因为当我用实现CollisionObserver的对象调用构造函数时,错误消息显示该构造函数未定义。

好的,这是完整的Cursor类:

public class Cursor implements CollisionSubject{

private Vector direction;
private GL gl;
private float radius;
private LibraryFinger finger;
private GLUT glut;
protected static float[] sphere_center = new float[3];
private ArrayList<CollisionObserver> observer = new ArrayList<CollisionObserver>();

public Cursor(GL gl, LibraryFinger finger, Vector direction, float radius, int index, ArrayList<T extends CollisionObserver> observerList){
    this.gl = gl;
    this.finger = finger;
    this.direction = direction;
    this.radius = radius;
    glut = new GLUT();

//Finetuning for fingermovements! The vector delivered by the LeapListener is to be considered as
//raw-data. It has to be adjusted to the environment in which the fingertracking is used.
    sphere_center[0] = (float) (finger.getX()/15);
    sphere_center[1] = (float) ((finger.getY()/20)*-1);
    sphere_center[2] = (float) (finger.getZ()/5);

    gl.glTranslatef(sphere_center[0], sphere_center[1], sphere_center[2]);
    gl.glEnable(GL.GL_CULL_FACE);
    gl.glCullFace(GL.GL_BACK);
    gl.glColor3f(0.757f, 0.804f, 0.804f);

    glut.glutSolidSphere(radius, 16, 16);
    for (int i = 0; i < index; i++){
        registerCollisionObserver(observerList.get(i));
    }
    myPosition();
}

@Override
public void registerCollisionObserver(CollisionObserver o) {
    observer.add(o);        
}

@Override
public void removeCollisionObserver(CollisionObserver o) {
    if (!observer.isEmpty()) {
        int i = observer.indexOf(o);
        if (i >= 0)
            observer.remove(i);
    }
}


@Override
public void myPosition() {
    for (int i = 0; i < observer.size(); i++) {
        CollisionObserver o = observer.get(i);
        o.collision(finger, direction, radius);
    }
}

这就是我调用构造函数的方式。我在两个不同的班级中这样做。头等舱:

private ArrayList<Picture> picList = new ArrayList<Picture>();

类型“图片”实现了接口CollisionObserver

 Cursor finger = new Cursor(gl, lfl[i], listener.getFl().get(i).direction(), 0.5f, picList.size(), picList);

第二课也一样。Type Shelf实现CollisionObserver接口:

    private ArrayList<Shelf> shelfList = new ArrayList<Shelf>();
    Cursor finger = new Cursor(gl, lfl[i], listener.getFl().get(i).direction(), 0.5f, shelfList.size(), shelfList);

在构造函数参数之一中,您需要声明以下内容:

ArrayList<T extends CollisionObserver>

哪里T来的?如果要ArrayList使它包含与该类类型绑定的元素,则在T此处使用适当。

从表面上看,您需要一个仅实现的对象的列表CollisionObserver,因此这将是您想要的声明:

ArrayList<? extends CollisionObserver>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

泛型类型作为构造函数参数

来自分类Dev

Haxe中泛型类型参数的构造

来自分类Dev

Java构造函数中的泛型?

来自分类Dev

Java在构造函数中定义泛型

来自分类Dev

泛型构造函数中的重载解析

来自分类Dev

构造函数作为参数:推断类的泛型为函数

来自分类Dev

是否可以从 Typescript 中的非构造函数方法参数推断泛型类类型?

来自分类Dev

DryIoC根据泛型类型参数将参数传递给开放泛型服务的构造函数

来自分类Dev

Java泛型-构造函数调用的显式类型参数

来自分类Dev

Java泛型-构造函数调用的显式类型参数

来自分类Dev

从具有泛型参数的子类方法调用构造函数

来自分类Dev

泛型类的泛型构造函数

来自分类Dev

构造函数泛型问题

来自分类Dev

需要C#中的泛型构造函数

来自分类Dev

用Java中的泛型类型重载构造函数

来自分类Dev

使用泛型在抽象类中调用构造函数

来自分类Dev

C#中的条件泛型类型构造函数?

来自分类Dev

从TypeScript中的泛型类型获取构造函数/实例

来自分类Dev

在构造函数中初始化静态泛型列表

来自分类Dev

使用泛型在抽象类中调用构造函数

来自分类Dev

继承类中的泛型和构造函数

来自分类Dev

TypeScript 中泛型类型的返回构造函数

来自分类Dev

java中泛型类中的非泛型构造函数

来自分类Dev

函数中的泛型

来自分类Dev

TypeScript泛型:返回指定为参数的实例的构造函数的函数

来自分类Dev

如何在函数调用中使用Typescript泛型类构造函数作为参数

来自分类Dev

具有泛型构造函数的泛型类?

来自分类Dev

Java泛型与非泛型构造函数

来自分类Dev

在D中传递带有泛型参数的函数指针

Related 相关文章

热门标签

归档