使方法只能访问模板类中的某些对象



我对java泛型有一个非常令人困惑的问题。我以前从未尝试过这些泛型类,但我决定试一试。我创建了自己的 LinkedList 类,该类可以使任何对象的 List 结构。

public class LinkedList<T> {
private Node first, last;
private int size;
private class Node {
    T data;
    Node next;
    public Node(T data) {
        this.data = data;
        next = null;
    }
}
...
public int seek(String name) {
    int i = -1;
    int counter = 0;
    Node t = first;
    while(t != null) {
        if(t.data.toString().equals(name)) {
            i = counter;
            break;
        }
        counter++;
        t = t.next;
    }
    return i;
}

我希望 seek 方法只能从从我的其他类之一(具有名称)继承的对象访问,因为我计划让 LinkedList 可供任何对象使用,但该方法只能由某些对象使用。我怎样才能做到这一点?(为了澄清我的问题,我想阻止对象获取此方法,我知道我可以使用instanceof

与其使用复杂的、黑客式的反射技巧,不如在没有任何其他类的情况下将这两个类放在一个包中(除非其他类是您不介意能够访问此方法的类)?如果是这样,请将seek()包设置为受保护(无访问修饰符)。然后,在您的其他类中,添加如下声明:

protected static int seek(LinkedList<?> list, String name) {
    return list.seek(name);
}

protected修饰符可确保访问仅限于类的子类。他们实际上不能以通常的语法在 LinkedList 类的实例上调用它,但这也可以。

相关内容

  • 没有找到相关文章

最新更新