在java中,在运行时通过唯一的trait(完全限定名/ID/)访问类及其方法的正确/规范方式是什么?



除了需要每个对象的硬编码数组的反射之外,我找不到任何方法来做到这一点,其中将有数百个。这看起来像是糟糕的设计。是否有一种合适的方法可以通过类的完全限定名调用该类的构造函数/静态方法,或者在理想情况下,使用类的ID或名称等唯一属性。我是这么认为的,因为这在电子游戏中是经常需要的。例如,生成一个ID为5的道具。

感谢您的宝贵时间!

我想我明白问题的实质了——创建对象的实例和不同的对象类型本身是有区别的。例如,存在诸如String这样的对象类型,但是可以有多个不同的String实例。例如,

for(int i = 0; i < 1000; i++) {
String newString = "foo" + i;
}

这是3行代码,但创建了1000个String实例。

在游戏和大多数大型应用程序中,你可以拥有数百,数千,甚至数百万的实例各种不同的类型对象。

例如,你可能想要一个Enemy对象类型。你可以创建一个Enemy类,这个类可以有一个属性,比如name

然后你可以很容易地在你的程序中动态创建对象,比如:

class Enemy {

public String name;

public Enemy(String name) {
this.name = name;
}
}
void spawnNewEnemy() {
return new Enemy("some unique name");
}

在您的程序中,它可以在不同的条件下被调用数百次,您可以有数百或数千个Enemy实例,但只定义一个类,Enemy。你可以有一个配置文本文件,定义敌人的不同名称及其id、伤害等,然后让程序在启动时读取该文本文件,并基于这些属性构建Enemy对象。

创建像这样的对象实例是面向对象编程的全部内容。您的代码响应来自用户或外部源的不同输入,作为回报,创建和修改对象。

对于本质上功能不同的东西,你应该只使用不同的类。

相关内容

  • 没有找到相关文章

最新更新