0

我需要的是定义一个可以键入的类来保存特定类型的对象。持有的对象还需要有对包含类的引用。

我不确定我是否找错了树,或者我是否接近解决方案,而不是关于类型安全的 Eclipse 警告。

界面看起来像(这似乎定义正确):

public interface ItemInterface {
    public ItemOwner<? extends ItemInterface> getOwner();
    public void setOwner(ItemOwner<? extends ItemInterface> owner);
}

所有者类看起来像(这也看起来很简单):

public class ItemOwner <T extends ItemInterface> {

    private NavigableSet<T> items = new TreeSet<T>();

    public Set<T> getItems() {
        return Collections.unmodifiableSet(items);
    }   

    public void addItem(T item) {
        // if we are passed a null, throw an ILA error
        if (item == null)
            throw new IllegalArgumentException("Argument was null.");

        // check whether already is a member
        if (items.contains(item))
            throw new IllegalArgumentException("Already a member.");

        items.add(item);
        item.setOwner(this);
    }

    public void removeNode(T item) {
        // if we are passed a null, throw an ILA error
        if (item == null)
            throw new IllegalArgumentException("Argument was null.");

        // check whether node already is a member
        if (!items.contains(item))
            throw new IllegalArgumentException("Not a member.");

        items.remove(item);
    }
}

可以拥有的物品如下:

public class Item implements ItemInterface {

    private ItemOwner<? extends ItemInterface> owner;

    public ItemOwner<? extends ItemInterface> getOwner() {
        return owner;
    }

    public void setOwner(ItemOwner<? extends ItemInterface> owner) {
        // if we are passed a null, throw an ILA error
        if (owner== null)
            throw new IllegalArgumentException("Argument was null.");

        this.owner = owner;
    }
}

我在 Eclipse 中遇到的错误是 getOwner() 上的警告:“ItemOwner 类型的表达式需要未经检查的转换才能符合 ItemOwner”。

4

0 回答 0