gpt4 book ai didi

java - 有没有一种方法可以在点的末尾添加字符串而无需手动输入?

转载 作者:行者123 更新时间:2023-12-02 01:31:36 25 4
gpt4 key购买 nike

我想创建一个OreBase类,这样我就不会为每个新矿石创建一个新类,因为它们几乎应该做完全相同的事情:1.存在,2.删除在矿石名称下划线之前命名的适当项目(ruby_ore -> ruby​​)。要为 ruby​​_ore 返回 ruby​​,我需要返回 ModItems.RUBY,我可以从 "ruby_ore" 获取字符串 "RUBY",但是我不知道如何在“ModItems”之后正确添加它。。这可能吗?

如果这是不可能的,是否可以放置“ModItems.”和项目字符串ex。 “RUBY” 在单个字符串中,例如。 “ModItems.RUBY”并将该字符串作为代码运行?

@Override
public Item getItemDropped(IBlockState state, Random rand, int fortune) {
int a = ore_name.indexOf('_'); //ex. ore_name = ruby_ore
String b = ore_name.substring(0,a); //ex. ruby
String c = b.toUpperCase();//ex. RUBY
return ModItems.b;//i want this to do ex. ModItems.RUBY
}

因此,如果 ore_name 是 ex。 biotite_ore 该函数应返回ModItems.BIOTITE,对于pyroxine_ore,它应返回ModItems.PYROXINE,等等。

最佳答案

至少有 3 种方法可以做到这一点。任君选择。

<强>1。制作ModItems包含 Item 的枚举对象:

     int a = ore_name.indexOf('_');
String b = ore_name.substring(0,a);
String c = b.toUpperCase();
return ModItems.valueOf(c).getItem();

优点:简单,添加新项目时无需更新 map
缺点:如果 ModItem 则抛出异常不存在

2.制作Map<String, ModItem> (首选):

    return oreMap.get(ore_name);

优点:简单、易于实现
缺点:每次添加项目时都必须更新 map ,get对于未知矿石返回 null

3.反射(reflection):

     int a = ore_name.indexOf('_');
String b = ore_name.substring(0,a);
String c = b.toUpperCase();
return ModItems.class.getDeclaredField(c).get(null);

优点:无需为每个新项目更新 map
缺点:杀伤力过大,抛出丑陋的检查异常,除非绝对必要,否则通常会被人皱起眉头。

关于java - 有没有一种方法可以在点的末尾添加字符串而无需手动输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55977962/

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