我对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
)
答案 0 :(得分:2)
不是使用复杂的,反复的反射技巧,你可以将这两个类放在一个没有任何其他类的包中(除非其他类是你不介意能够访问这个方法的类)吗?如果是,请使seek()
受包保护(无访问修饰符)。然后,在您的其他类中,添加如下声明:
protected static int seek(LinkedList<?> list, String name) {
return list.seek(name);
}
protected
修饰符可确保访问仅限于您的类的子类。他们实际上不能用通常的语法在LinkedList
类的实例上调用它,但这也可以。