非静态方法不能从静态方法引用

时间:2014-04-21 22:11:20

标签: java arraylist

我试图打印我的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());                
  }

}

谢谢。

1 个答案:

答案 0 :(得分:3)

System.out.println(HighRights.getName());

您尝试静态调用getName(),但它不是static方法。

你想要的是

System.out.println(((HighRights) m).getName());

换句话说,您需要将引用转换为HighRights,以便可以访问getName()方法并在引用上调用它,而不是静态引用。