我试图打印我的HighRights对象,但它不会让我......请注意静态方法无法引用非静态方法。我基本上希望它打印出所有已添加的值(" AAA"," AACCA"等等)。
import java.util.*;
public class Ex8 {
public void printHighUsers(ArrayList<SecurityRights> a){
for(SecurityRights m: a)
{
if(m instanceof HighRights)
{
System.out.println(HighRights.getName());
}
}
}
public static void main(String [] a){
ArrayList<SecurityRights> ma=new ArrayList<SecurityRights>();
ma.add(new HighRights("AAA"));
ma.add(new HighRights("AACCA"));
ma.add(new HighRights("BB"));
ma.add(new HighRights("AaaAA"));
new Ex8().printHighUsers(ma);
}
}
HighRights类:
public class HighRights extends SecurityRights
{
private String name;
public HighRights(String n){
super(true);
this.name = n;
}
public String getName(){
return name;
}
public static void main(String[] a){
HighRights s= new HighRights("Lisa");
System.out.print(s.getName() +" "+s.getSecret());
}
}
谢谢。
答案 0 :(得分:3)
在
System.out.println(HighRights.getName());
您尝试静态调用getName()
,但它不是static
方法。
你想要的是
System.out.println(((HighRights) m).getName());
换句话说,您需要将引用转换为HighRights
,以便可以访问getName()
方法并在引用上调用它,而不是静态引用。