Java-通过数组索引访问对象方法

Java-通过数组索引访问对象方法,java,arrays,object,methods,Java,Arrays,Object,Methods,我在从数组中的对象访问方法时遇到问题。我正在尝试创建一个纸牌游戏。在创建卡片对象的那一刻,我将它们推到Arraylist中。现在,当我在这个数组中得到5个card对象时,我想访问[0]索引的card的方法,但我不知道如何访问。代码如下: public static void main(String[] args) { Main main = new Main(); //creates new card Card FireElemental = new

我在从数组中的对象访问方法时遇到问题。我正在尝试创建一个纸牌游戏。在创建卡片对象的那一刻,我将它们推到Arraylist中。现在,当我在这个数组中得到5个card对象时,我想访问[0]索引的card的方法,但我不知道如何访问。代码如下:

    public static void main(String[] args) {
      Main main = new Main();
      //creates new card
      Card FireElemental = new Card("Fire Elemental");

      // adds card to array
      main.player2FieldCards.add(FireElemental);

      // Now to access it's methods, the example below is not working but 
      // to give an example of what I want.
      main.player2FieldCards.get(0).SomeMethod();
}

如果您的意思是,在您的示例中,“Main”包含arraylist,那么可能您忘记了将其设置为泛型。您需要添加
ArrayList
而不是纯
ArrayList
,因为在没有泛型的情况下,您存储对象元素,为了调用Card对象上的方法,您需要在之前将其强制转换为Card

((Card)main.player2FieldCards.get(0)).SomeMethod();

我认为你在逻辑部分出了问题。您的解决方案可能有很多问题(或没有问题)。您的
Main
类定义中的
列表可能不是通用的。你想做的事情应该是这样的。主类应该是这样的

public class Main {
    List<Card> player2FieldCards; //Must not be List player2FieldCards;

    public Main() {
        player2FieldCards = new ArrayList<>();
    }

    public static void main(String args[]) {
        //Rest of you main method code goes here
    }
}

如果您对类有类似的定义。那么事情应该如预期的那样进行。如果没有,请指出,然后打电话给我。

应该可以。您能否与我们共享
Main
的代码?很可能,您声明
player2FieldCards
ArrayList
,没有通用类型。类似于
ArrayList player2FieldCards=new ArrayList()
,如果为真,则应将其更改为:
List player2FieldCards=new ArrayList()
您应强制转换它((您的类)main.player2FieldCards.get(0)).SomeMethod();您有一个名为
main()
的方法,一个名为
main
的类,以及该类的一个名为
main
的实例。这令人困惑;不要这样做,以后会出问题的。将类重命名为类似于
CardDeck
的名称,并将实例重命名为
playerHand
。只要确保不同的东西有不同的名字,这样它们就很容易被立即识别。是的!就是这样!谢谢你的帮助和快速回复!!
class Card {
    // Fields declarations 

    // Methods declarations 

    public void SomeMethod() {

    }
}