我对 java 泛型有一个非常令人困惑的问题。我以前从未尝试过这些泛型类,但我决定尝试一下。 我创建了自己的 LinkedList 类,可以创建任何对象的列表结构。
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 方法只能从继承 self 的其他类之一(有名称)的对象访问,因为我计划将 LinkedList 可由任何对象,但该方法只能由某些对象执行。我怎样才能实现这个目标? (为了澄清我的问题,我想阻止对象获取此方法,我知道我可以使用 instanceof
)
最佳答案
您是否可以将这两个类放在一个包中而不使用任何其他类(除非其他类是您不介意能够访问此方法的类),而不是使用复杂的、黑客式的反射技巧?如果是这样,请使 seek()
受包保护(无访问修饰符)。然后,在您的其他类中添加如下声明:
protected static int seek(LinkedList<?> list, String name) {
return list.seek(name);
}
protected
修饰符确保访问仅限于您的类的子类。他们实际上无法以通常的语法在 LinkedList
类的实例上调用它,但这也有效。
关于java - 使方法只能被模板类中的某些对象访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34885960/