根据Java中的输入字符串名称返回对象

用户3393249

我有一个要求,我必须编写一个接受“字符串”的方法,并且基于此字符串,我需要返回MyObject类型的对象。这可以通过使用开关盒来完成,但是如何动态地实现呢?

在以下情况下,可以通过将“ myObject1”作为字符串来调用方法,然后此方法应返回myObject1对象。这怎么做。

public class HelloWorld {

    MyObject myObject1 = new MyObject();
    MyObject myObject2 = new MyObject();
    MyObject myObject3 = new MyObject();


public MyObject getMyObject(String string)
{
    return <<myObject1 or 2 or 3 based on string parameter name>>;
}

}


class MyObject {

}
可怜的理查德

如果您真的想做这样的事情,倒影是您的朋友。您可以按名称查找声明的字段,然后使用它们查找实例变量。

我已经修改了您的示例,使其包括一个主要方法,该方法可以查找MyObject的每个实例,并且还包含一个失败案例。我还修改了MyObject,以便您可以轻松判断已找到哪个实例。

import java.lang.reflect.Field;

public class Reflection {

    MyObject myObject1 = new MyObject("1");
    MyObject myObject2 = new MyObject("2");
    MyObject myObject3 = new MyObject("3");

    public MyObject getMyObject(final String string) {
        try {
            final Field declaredField = this.getClass()
                    .getDeclaredField(string);
            final Object o = declaredField.get(this);
            if (o instanceof MyObject) {
                return (MyObject) o;
            }

        } catch (final Exception e) {
        }
        return null;
    }

    class MyObject {
        final String name;

        public MyObject(final String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            // TODO Auto-generated method stub
            return name;
        }

    }

    public static void main(final String[] args) {
        final Reflection r = new Reflection();
        System.out.println(r.getMyObject("myObject1"));
        System.out.println(r.getMyObject("myObject2"));
        System.out.println(r.getMyObject("myObject3"));
        System.out.println(r.getMyObject("invalid"));
    }

}

Oracle Java文档中有一些有关反射的有用信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据字符串中的值返回字符串而不会截断

来自分类Dev

根据UUID对象中的字段构造字符串

来自分类Dev

Java中字符串的输入验证

来自分类Dev

根据Java中的输入字符串名称返回对象

来自分类Dev

在Javascript中按名称(字符串)返回私有对象属性

来自分类Dev

如何在Swift中根据字符串创建对象?

来自分类Dev

根据名称以字符串形式在列表中调用函数

来自分类Dev

根据C#中的输入对字符串进行分类

来自分类Dev

返回Java中的字符串方法?

来自分类Dev

从开关中的字符串名称返回等效对象

来自分类Dev

如何读取字符串中的字符并根据输入返回?

来自分类Dev

根据angularJS中的日期返回各种字符串

来自分类Dev

ArrayList中的Java字符串对象

来自分类Dev

根据输入返回字符串或Int

来自分类Dev

根据Javascript中的查询字符串创建嵌套对象

来自分类Dev

如何根据字符串数组中的对应值返回字符串

来自分类Dev

按名称返回对应的输入类型为字符串(字符串模板文字)

来自分类Dev

根据字符串中的名称测试信号的存在

来自分类Dev

从开关中的字符串名称返回等效对象

来自分类Dev

根据输入字符串创建字符串数组

来自分类Dev

解析Java中的返回字符串

来自分类Dev

根据条目输入TCL删除文件中的字符串

来自分类Dev

根据java中的扫描仪输入将枚举值分配给字符串

来自分类Dev

在java中根据字符串名称调用函数

来自分类Dev

从对象中定义的字符串解析方法名称

来自分类Dev

通过使用字符串对象成员名称处理 IQueryable.Order 扩展中的无效输入

来自分类Dev

Java:当我将其名称作为字符串时如何返回对象?

来自分类Dev

遍历字符串,根据对象中的字符值返回得分最高的单词 - JavaScript

来自分类Dev

如何在java中根据字符串日期对对象进行排序

Related 相关文章

  1. 1

    根据字符串中的值返回字符串而不会截断

  2. 2

    根据UUID对象中的字段构造字符串

  3. 3

    Java中字符串的输入验证

  4. 4

    根据Java中的输入字符串名称返回对象

  5. 5

    在Javascript中按名称(字符串)返回私有对象属性

  6. 6

    如何在Swift中根据字符串创建对象?

  7. 7

    根据名称以字符串形式在列表中调用函数

  8. 8

    根据C#中的输入对字符串进行分类

  9. 9

    返回Java中的字符串方法?

  10. 10

    从开关中的字符串名称返回等效对象

  11. 11

    如何读取字符串中的字符并根据输入返回?

  12. 12

    根据angularJS中的日期返回各种字符串

  13. 13

    ArrayList中的Java字符串对象

  14. 14

    根据输入返回字符串或Int

  15. 15

    根据Javascript中的查询字符串创建嵌套对象

  16. 16

    如何根据字符串数组中的对应值返回字符串

  17. 17

    按名称返回对应的输入类型为字符串(字符串模板文字)

  18. 18

    根据字符串中的名称测试信号的存在

  19. 19

    从开关中的字符串名称返回等效对象

  20. 20

    根据输入字符串创建字符串数组

  21. 21

    解析Java中的返回字符串

  22. 22

    根据条目输入TCL删除文件中的字符串

  23. 23

    根据java中的扫描仪输入将枚举值分配给字符串

  24. 24

    在java中根据字符串名称调用函数

  25. 25

    从对象中定义的字符串解析方法名称

  26. 26

    通过使用字符串对象成员名称处理 IQueryable.Order 扩展中的无效输入

  27. 27

    Java:当我将其名称作为字符串时如何返回对象?

  28. 28

    遍历字符串,根据对象中的字符值返回得分最高的单词 - JavaScript

  29. 29

    如何在java中根据字符串日期对对象进行排序

热门标签

归档