Java和SO都相当新。这是我的问题:
假设x是X类的实例.y是X的属性(字段)。如果我在函数f中传递“x.y”,有没有办法访问x?
示例:
Class Person
{
public Girl girl; //Girl itself is another class
}
public void function1(Girl g)
{
//body
}
Person p = new Person();
p.girl = new Girl();
function1(p.girl);
现在,我想在函数中访问p。 (类似链接列表中的“上一个”指针)。
环顾四周,找到一种叫做反射的东西。但这确实无济于事。谢谢!
答案 0 :(得分:3)
你问题的简短回答是否定的。除非Girl对象专门设计为具有对其父对象的引用(您在java中的GUI对象中看到很多)。但这取决于设计课程的人。非常类似于“先前指针”的示例,它依赖于开发人员首先实现“先前指针”。开发人员可以很容易地使用没有先前指针的单链表。
所以简而言之。这取决于您正在使用的对象。反思不是这里的答案。反思更多的是通过字符串名称访问事物并检查类的成员。
答案 1 :(得分:0)
当然,如果链接列表可供参考,您可以参考。看看这个程序。如果我误解了你的问题,请告诉我。
public class Person
{
String personName;
static class Girl
{
Person girlParent;
String girlName;
public Girl(String name, Person parent)
{
girlName = name;
girlParent = parent;
}
}
public Person(String name)
{
personName = name;
}
public static void function(Girl girl)
{
System.out.println("The girl's name is "+girl.girlName);
System.out.println("The girl's parent is "+girl.girlParent.personName);
}
public static void main(String[] args)
{
Person julia = new Person("Julia");
Girl nancy = new Girl("Nancy", julia);
function(nancy);
}
}
输出
The girl's name is Nancy
The girl's parent is Julia