gpt4 book ai didi

java - 将 Object 类型的对象复制到特定类型的对象

转载 作者:太空宇宙 更新时间:2023-11-04 07:07:42 24 4
gpt4 key购买 nike

所以我试图创建一个(不同)对象的数组(其中一个在“Triangle”类中定义的对象),在弄乱它一段时间后,这就是我得到的:

public class ShapeContainer {

private Object objects [];
private int _size;
public static final int init_size = 3;

public ShapeContainer(ShapeContainer other){
this.objects = new Object[other.objects.length];
this._size = other._size;
for(int i=0; i<_size ;i++){
if (other.objects[i].getClass().equals(Triangle.class)){
this.objects[i] = new Triangle(other.objects[i]);
}
}
}
}

为此,我在 Triangle 类中创建了一个新的构造函数(注意:Triangle 是由 3 个 Point 对象构建的:Point p1、Point p2、Point p3。每个 Point 对象都是由 2 个 double 变量构建的:x,y):

public Triangle (Object obj){
this.p1 = new Point(obj.p1);
this.p2 = new Point(obj.p2);
this.p3 = new Point(obj.p3);
}

现在的问题是我无法引用 obj.p1/obj.p2/obj.p3 因为“Object obj”不被识别为三角形对象。

那么基本上,有没有办法让通用对象被识别为特定对象?如果没有,您是如何解决这个问题的?

最佳答案

有一种方法,尽管我个人认为它的用法不是很干净。在这里

public Triangle(Object obj){
if (obj instanceof Triangle){
Triangle other = (Triangle) obj;
this.p1 = new Point(other.p1);
this.p2 = new Point(other.p2);
this.p3 = new Point(other.p3);
}
...
}

为什么我觉得这不是很干净?首先,如果该对象不是三角形,我不知道该怎么办。您必须弄清楚这一点,这意味着如果该构造函数接收到一个不是三角形的对象,您会怎么做?抛出异常?不确定...这通常不会发生在经常使用 instanceofequals 等方法中,因为这样您就知道您只是返回 false

但是,至少你知道如何“将物体识别为三角形”。

希望这有帮助

关于java - 将 Object 类型的对象复制到特定类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21091343/

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