我需要在ArrayList中存储不同的对象。物体在性质上相似但不同并且具有不同的方法。
.format()
那么使用什么我可以使用对象中的所有方法。
答案 0 :(得分:4)
您可以创建一个ArrayList<Object>
。这是一个可以存储任何内容的列表。使用它并不是很有用,因为取出东西基本上会迫使你检查它们的类型以便调用任何方法。出于这个原因,你几乎应该总是避免这样做。
收藏中的对象通常有一些共同之处 - 如果他们不这样做,你应该重新考虑为什么你将它们扔进同一个集合中。在你的情况下,他们是所有形状。因此,请考虑添加一个共享接口,例如Shape
,它结合了常用功能。
我略微简化,因为你有2D和3D形状的概念,但这里是要点:
interface Shape
{
double area();
double perimeter();
}
class Circle implements Shape
{
// ...
public double area()
{
return radius * radius * Math.PI;
}
public double perimeter()
{
return 2 * Math.PI * radius;
}
}
class Square implements Shape
{
//...
}
然后创建Shape
s列表:
List<Shape> shapes = Arrays.asList(new Circle(3), new Square(4), ...);
答案 1 :(得分:0)
ArrayList<Object> list = new ArrayList<Object>();
你可以调用所有方法,包括Object类方法。
答案 2 :(得分:0)
我认为您可以创建一个对象列表,并在使用某人时将其转换为特定类型
List<Object> obj = new ArrayList<Object>();
if (obj.get(i) instanceof Class) {
Class objCast = (Class)obj
}
答案 3 :(得分:0)
这是你必须要做的。
定义Shape界面..
实施Circle and Cube的界面
为Circle和Cube创建形状对象,并将它们添加到arraylist ..
以下代码:
public interface Shape {
public void draw();
}
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Drawing Circle");
}
}
public class Cube implements Shape {
@Override
public void draw() {
System.out.println("Drawing Cube");
}
}
public class Simulator{
public static void main(String[] s){
Shape s1 = new Circle();
Shape s2 = new Cube();
ArrayList<Shape> shapeList = new ArrayList<Shape>();
shapeList.add(s1);
shapeList.add(s2);
}
}
答案 4 :(得分:0)
import string
variables={}
for value in string.ascii_lowercase[0:9]:
for i in range(10):
variables.update({value + str(i): 0})
print(variables)
您可以存储任何对象类型。