gpt4 book ai didi

java - 将对象传递给类时,如何访问它的变量/函数?

转载 作者:行者123 更新时间:2023-12-02 01:31:46 25 4
gpt4 key购买 nike

我希望这听起来不太愚蠢并且有道理。

class Test {
int num;
public Object obj;

public Test(int num, Object obj){
this.num = num;
this.obj = obj;
}

int getNum(){
return num;
}

}

class Bird {
public int size;

public Bird(int size){
this.size = size;
}

public void setSize(int size){
this.size = size;
}

public int getSize(){
return size;
}

}
 void setup(){
size(100, 100);

Bird y = new Bird(7);
Test x = new Test(4, y);

//x.obj.size does not work
//x.obj.getSize() does not work
}

所以我有这两个文件。第一个有类,第二个实际运行它。传入对象后,尝试访问该类的变量或函数是行不通的。有办法让这项工作发挥作用吗?

我最初试图找到一种方法来制作函数的 ArrayList(没有 Lambda),因为这变得徒劳无功,我考虑过改变我的方式。

我还尝试将 public Object obj; 变成 public Bird obj; 这并没有改变任何东西。

我走在正确的道路上吗?有没有好的方法来做这样的事情?

我还要指出,这是在Processing 3.5 中编写的。它就像 Java,只是进行了微小的语法更改,所以这就是为什么有些东西可能看起来不正确。这也是 Lambda 不起作用的原因。

提前致谢!

最佳答案

如果您有 Object 类型的变量,则编译器仅“了解”Object 类内的函数。

如果您想使用更具体类型的函数,则必须强制转换变量,如下所示:

Bird z = (Bird) x.obj;
println(z.size);

请注意,这实际上并没有改变对象的类型,它只是告诉编译器期望什么类型。如果变量实际上不是 Bird,那么这将失败。

或者您可以将 obj 变量更改为更具体的类型:

class Test {
int num;
public Bird obj;

public Test(int num, Bird obj){
this.num = num;
this.obj = obj;
}

// ...

现在您可以访问 Bird 类中的函数:

println(x.obj.size);

无耻的 self 推销:here是有关在处理中创建类的教程。

关于java - 将对象传递给类时,如何访问它的变量/函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55930980/

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