仅在main void中找到方法(找不到符号,符号:方法tulosta(),location:class Object)

时间:2015-10-30 20:14:15

标签: java

所以问题是方法" print()"只能在main void中使用。当我尝试在" changeAccount()"中使用它时它说"找不到符号"。

public class Main {

    public static ArrayList createAccount(ArrayList accountList) {

        Account account1 = new Account();
        accountList.add(account1);
        return accountList;
    }

    public static int changeAccount(ArrayList accountList) {

        accountList.get(0).print();
    }

    public static void main(String[] args) {

        ArrayList<Account> accountList = new ArrayList<>(0);
        createAccount(tiliTaulukko);
        accountList.get(0).print();
    }
}

现在这里是调用print方法的地方。

public class Account {

    public void print(){

    }

}

2 个答案:

答案 0 :(得分:3)

accountList方法中,参数ArrayList被声明为ArrayList<Account>,而不是accountList.get(0),因此java.lang.Object的类型将为print() },没有定义history -c; history -w方法。

答案 1 :(得分:2)

您的问题是accountList.get(0)返回的类型与您的两种方法不同。

main方法中,您已将accountList定义为ArrayList<Account>

public static void main(String[] args) {
    ArrayList<Account> accountList = new ArrayList<>(0);
    ...
}

因此,当您致电accountList.get(0)时,您会收到Account,并且可以在其上运行print()而不会出错。

changeAccount方法中,您已将accountList参数定义为原始 ArrayList:

public static int changeAccount(ArrayList accountList) {
    ...
}

因此,当您致电accountList.get(0)时,您会收到Object,但没有print()方法。

将参数类型更改为ArrayList<Account>

public static int changeAccount(ArrayList<Account> accountList) {
    //This should now work
    accountList.get(0).print();
    ...
}