有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正试图打印我的HighRights对象,但它不允许我。。一直说不能从静态方法引用非静态方法。我基本上希望它打印出所有添加的值(“AAA”、“AAACCA”等)

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);
    }
}

人权类:

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) 个答案

  1. # 1 楼答案

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

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

    你想要的是

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

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