Java 有没有一种方法可以让我在构造函数中查找对象的名称?

Java 有没有一种方法可以让我在构造函数中查找对象的名称?,java,processing,Java,Processing,我有一个相当简单的Java相关问题。我需要在构造函数中以某种方式获得新的对象名,以便将其添加到数组中。如果可能的话,我将如何实现这一点 为了帮助可视化,下面是我需要做的 TestExample example = new examplemain(); TestExample.element exelement = example.new element(); 此时,随着新button对象的创建,我有了一个构造函数。examplemain类有一个名为update的函数。我需要对每个对象执行此更新

我有一个相当简单的Java相关问题。我需要在构造函数中以某种方式获得新的对象名,以便将其添加到数组中。如果可能的话,我将如何实现这一点

为了帮助可视化,下面是我需要做的

TestExample example = new examplemain();
TestExample.element exelement = example.new element();
此时,随着新button对象的创建,我有了一个构造函数。examplemain类有一个名为update的函数。我需要对每个对象执行此更新,以更新与exelement关联的图形元素。最明显的方法是将其添加到数组中,然后在调用example.update()时,只需运行一个数组即可更新所有内容。像这样的东西会达到我想要的效果,但只适用于exelement,这是不好的

element() {
TestExample.array[0]="exelement"
}
我发现了类似这样的东西。toString()、getName()或getClass(),但我找不到任何有意义的方法将其应用到我需要的方法中。为了重申这一点,我需要能够执行类似于
TestExample.array[0].status=1的操作


提前谢谢

不幸的是,这是绝对不可能的。即使反射也无法找到仍在初始化过程中的字段名称


例如,您必须将名称传入构造函数。

不幸的是,这是绝对不可能的。即使反射也无法找到仍在初始化过程中的字段名称


例如,您必须将一个名称传递给构造函数。

理解您所说的有点困难,因为您的示例显然没有做到您所说的。(例如,
TestExample.array[0]=“exelement”
只是保存一个字符串,您无法将其解析为变量。)

事实上,我很确定这些变量是一个骗人的把戏。你真正需要的是这样的东西:

// Simplistic incorrect version ...
public class Element {
    private static List<Element> allElements = new ArrayList<>();

    public Element() {
        ...
        allElements.add(this);
    }

    public void update() { ... } 

    public static void updateAll() {
        for (Element e: allElements) {
            e.update();
        }
    }
}
public class Outer {
    private List<Element> allElements = new ArrayList<>();

    public class Element {
        
        public Element() {
            ...
            allElements.add(this);
        }

        public void update() { ... } 
    }

    public void updateAll() {
        for (Element e: allElements) {
            e.update();
        }
    }
}
现在。。。如果
外部
实例变得不可访问,则任何只能通过
等位基因
访问的
元素
对象也不可访问



1-但是如果变量是关键的,那么我恐怕你运气不好。Java不提供获取变量地址或使用反射查找局部变量的方法。这就是@Louis Wasserman在中所说的。

理解你所说的有点困难,因为你的例子显然没有做到你所说的。(例如,
TestExample.array[0]=“exelement”
只是保存一个字符串,您无法将其解析为变量。)

事实上,我很确定这些变量是一个骗人的把戏。你真正需要的是这样的东西:

// Simplistic incorrect version ...
public class Element {
    private static List<Element> allElements = new ArrayList<>();

    public Element() {
        ...
        allElements.add(this);
    }

    public void update() { ... } 

    public static void updateAll() {
        for (Element e: allElements) {
            e.update();
        }
    }
}
public class Outer {
    private List<Element> allElements = new ArrayList<>();

    public class Element {
        
        public Element() {
            ...
            allElements.add(this);
        }

        public void update() { ... } 
    }

    public void updateAll() {
        for (Element e: allElements) {
            e.update();
        }
    }
}
现在。。。如果
外部
实例变得不可访问,则任何只能通过
等位基因
访问的
元素
对象也不可访问



1-但是如果变量是关键的,那么我恐怕你运气不好。Java不提供获取变量地址或使用反射查找局部变量的方法。这就是@Louis Wasserman在中所说的。

当然,
TestExample.array[0]。status=1实际上不起作用,我的字面意思是实现exelement的效果。status=1带有一个变量,它。。。我也很高兴知道,但我很确定我可以自己解决这个问题。对象没有名称,除非它们属于某个明确具有“有名称”概念的类。我认为您混淆了“对象”和“变量”的不同概念。当然,
TestExample.array[0]。status=1实际上不起作用,我的字面意思是实现exelement的效果。status=1带有一个变量,它。。。我也很高兴知道,但我很确定我可以自己解决这个问题。对象没有名称,除非它们属于某个明确具有“有名称”概念的类。我认为您混淆了“对象”和“变量”的不同概念。我只需要对象的名称,以便在其他函数中操作它。换句话说,我只需要找出如何将名称(在本例中为exelement)传递给构造,以便将其保存为变量。这将是最简单的操作方法。但是,您的方法也可能有效。我明天早上去登记。谢谢你的建议!对象没有名称。变量确实有名称。。。但不是以代码可以操纵的形式。听起来您试图做的事情在Java中是不可能的。您之所以难以找到一种能够满足您需要的Java语法,是因为该语法不存在。用不同的词表达同一个概念是不可能的,好吧。看起来你的方法会奏效。我假设此方法是将对象的引用添加到数组中,而不是对象名?我在代码中尝试实现列表时收到警告。它警告我名单不是一个类。是否有修复方法?
列表
是一个标准界面。你导入了它吗?我只需要对象的名称,这样我就可以在其他函数中操作它了。换句话说,我只需要找出如何将名称(在本例中为exelement)传递给构造,以便将其保存为变量。这将是最简单的操作方法。但是,您的方法也可能有效。我明天早上去登记。谢谢你的建议!对象没有名称。变量确实有名称。。。但不是以代码可以操纵的形式。听起来您试图做的事情在Java中是不可能的。您之所以难以找到一种能够满足您需要的Java语法,是因为该语法不存在。用不同的词表达同一个概念是不可能的,好吧。看起来你的方法会奏效。我假设这个方法是将对象的引用添加到数组中,而不是对象名?我收到了警告