gpt4 book ai didi

java - 创建不同对象的实例列表并使用这些对象

转载 作者:行者123 更新时间:2023-12-01 19:03:51 25 4
gpt4 key购买 nike

Java 代码:

import java.util.ArrayList;
import java.util.List;

class apple{
int price;

public void myFunction(int iPrice)
{
price=iPrice;
}
}

class orange{
int price;

public void myFunction(int iPrice)
{
price=iPrice;
}
}

public class main {

public static void main(String[] args) {
List <Object> list= new ArrayList<>();

//create 3 apple object to list
list.add( new apple() );
list.add( new apple() );
list.add( new orange() );

list.get(0). /* "get(0)." this isn't using apple object and my function */

}
}

最佳答案

如果您编写父类(在您的示例中 - Fruit),也许对您来说会更容易:

class Fruit {
int price;

void myFunction(int price) {
this.price = price;
}
class Apple extends Fruit { }
class Orange extends Fruit { }

public static void main(String[] args) {
List<Fruit> fruits = new ArrayList<>();

//create 3 apple object to list
fruits.add( new Apple() );
fruits.add( new Apple() );
fruits.add( new Orange() );

Fruit f = fruits.get(0);
f.myFunction(10); // now you can use methods writed in Fruit class

// or if you want to cast it to child class:
Apple apple = (Apple) f;

// but if u not sure about fruit's class, check at first:
if (f instanceof Apple) {
System.out.println("first fruit is an apple");
} else if (f instanceof Orange) {
System.out.println("first fruit is an orange");
} else {
System.out.println("first fruit is some another fruit");
}
}

此代码:List<Fruit> fruits = new ArrayList<>();表示list中存储的所有对象必须是Fruit类型或 Fruit 的子级。这个列表只会返回 Fruit通过方法对象 get() 。在您的代码中它将是 Object ,因此您必须先将其转换为子对象,然后才能使用它。

或者在我的示例中,如果您想对每种水果使用相同的方法,则不需要转换类型,只需创建一个具有所有相同方法的父类(super class)即可。

抱歉我的英语不好。

关于java - 创建不同对象的实例列表并使用这些对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11073990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com