繁体   English   中英

Java有界类型参数错误

[英]Java Bounded type parameters error

为什么我不能在这里使用Iterator? Netbeans表示,迭代器中的T与方法声明中的T之间存在差异。

public abstract class DeviceManager<T> {


private List<T> devices = new ArrayList<T>();
private Class<T> deviceClass;

public DeviceManager(Class<T> deviceClass){
    this.deviceClass = deviceClass;
}

public  <T> T find(T device){
    Iterator<T> iterator = devices.iterator();
        while(iterator.hasNext()) {
            T current = iterator.next();
            if (current.equals(device)) {
                return current;
            }

    }
    return null;
}

您将T重新声明为方法find中的泛型类型参数,因此它与DeviceManager类中的T不同。

您的方法也声明了一种类型,因此它可能与类中的类型不同。 无需再次在方法中声明类型。

您试图在类中使用泛型方法,将类型参数绑定到与在类声明中绑定类型相同的名称(T)。

为了正确地实现您的方法,您应该使用类型(类)泛型。 您不应在find()方法中定义新的泛型类型,而应重用已定义的类型。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public abstract class Test<T> {

    private List<T> devices = new ArrayList<T>();
    private Class<T> deviceClass;

    public Test(Class<T> deviceClass) {
        this.deviceClass = deviceClass;
    }

    public T find(T device) {
        Iterator<T> iterator = devices.iterator();
        while (iterator.hasNext()) {
            T current = iterator.next();
            if (current.equals(device)) {
                return current;
            }

        }
        return null;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM