从其字段中获取(访问)类

时间:2014-09-16 15:09:09

标签: java class reflection field

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。 (类似链接列表中的“上一个”指针)。

环顾四周,找到一种叫做反射的东西。但这确实无济于事。谢谢!

2 个答案:

答案 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