gpt4 book ai didi

java - java 如何从实例字段获取对象?

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

假设我有两个类(class)“动物”和“食物”:

   public class Animal {
String animalName = "";
Food animalFood;
public Animal(String animalName, Food food) {
this.animalFood = animalFood;
this.animalName = animalName;
}
}

public class Food {
String foodType;
String foodName;
public Food(String foodType, String foodName) {
this.foodName = foodName;
this.foodType = foodType;
}
}

public static void main(String[] args) {
Food dogFood = new Food("meat", "beef");
Animal animal = new Animal("Max", dogFood);
//problem: get animal from dogfood
}

无论如何,是否可以通过反射或其他方式从类的字段中获取类的实例(假设您有权访问这些字段)?编辑:这个例子显然不是真正的问题,所以假设我只有 dogfood 实例,它是从 Animal 的任意实例创建的 (animal 在这种情况下)我如何从中获取动物?

最佳答案

认为您想要做的是:

给定

public class Animal {
String animalName = "";
Food animalFood;
public Animal(String animalName, Food food) {
this.animalFood = animalFood;
this.animalName = animalName;
}
}

然后类似

public static void main(String[] args) {
Food dogFood = new Food("meat", "beef");
doSomethingWithAnimal(new Animal("Max", dogFood)); // <-- anonymous creation of an Animal
//problem: get animal from dogfood
Animal theAnonymousAnimal = //get it via reflection from dogFood
}

不,这是不可能的。 Food 不包含对 Animal 的引用,因此您不能。如果 Food 有一个 Animal 字段,并且在 Animal 构造函数中设置了该引用,那么是的,您可以通过正常反射。

关于java - java 如何从实例字段获取对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43307977/

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