gpt4 book ai didi

java - 从变量定义的类中读取

转载 作者:行者123 更新时间:2023-11-30 06:30:06 27 4
gpt4 key购买 nike

我有 Java 相关的问题:

我想知道有没有一种方法可以通过使用变量来创建类(在程序中)的路径。我正在制作一个程序,可以从某些站点下载图片并将它们显示给用户。然而,不同的网站有不同的形式,这就是为什么我必须为每个网站定义一系列特定的功能。它们不能放在同一个类中,因为执行相同工作(仅用于另一个站点)的函数必须具有相同的名称。我正在努力让以后尽可能简单地添加对另一个站点的支持。

无论如何,问题是,我可以使用变量来确定其位置来调用程序中的函数吗?

例如:code.picturesite.functionINeed();

code 是包含所有编码的包,而 picturesite 不是一个类,而是一个包含所需类名称的变量 - 这样我只能更改变量的值以调用不同的函数(或不同类中的相同函数)。

我真的不希望这是可能的(这更多是为了让您了解问题的本质),但是还有另一种方法可以实现我在这里想要实现的目标吗?

最佳答案

是的,有办法。这叫做反射

给定一个包含类名的字符串,您可以获得这样的实例:

Class<?> c = Class.forName("com.foo.SomeClass");
Object o = c.newInstance(); // assuming there's a default constructor

如果没有默认构造函数,您可以通过 c.getConstructor(param1.getClass(), param2.getClass(), etc)

获取对默认构造函数的引用

给定一个包含方法名称和实例的字符串,您可以像这样调用该方法:

Method m = o.getClass().getMethod("someMethod", param1.getClass(), param2.getClass(), etc);
Object result = m.invoke(o, param1, param2, etc);

关于java - 从变量定义的类中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10850657/

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