在 Java 中高效地循环遍历具有多种变量类型的对象数组

我正在用 Java 编写一个简单的脚本,它调用另一个包含我所有信息的类。


我将我的信息保存在 Object[] 数组中的被调用类中,并且我计划调用脚本来获取该数组。


现在这个函数看起来像这样。


public void tradeShop() {


    /*

     *Variables must be initialized in order to call shopTrader

     *The values are just non-null placeholders and they are 

     *replaced with the same values in the tradeValues Object array.

     */

    String targetName = "NPC Name";

    String itemName = "Item Name";

    int itemQuantity = 1;

    int minCoins = 1;

    int minBuy = 1;

    boolean stackable = false;


    Object[] tradeValues = shop.defaultValues;


    for (int i = 0; i < tradeValues.length; i++) {

        if(String.class.isInstance(tradeValues[i])) {//String check

            if(i==0) { //0 is NPC Name

                targetName = (String) tradeValues[i];

            } else if (i==1) { //1 is Item Name

                itemName = (String) tradeValues[i];

            }

        } else if (Integer.class.isInstance(tradeValues[i])) { //Int check

            if(i==2) { //2 is Item Quantity

                itemQuantity = (Integer) tradeValues[i];

            } else if (i==3) { //3 is Minimum coins

                minCoins = (Integer) tradeValues[i];

            } else if (i==4) { //4 is the Minimum Buy limit

                minBuy = (Integer) tradeValues[i];

            }

        } else if (Boolean.class.isInstance(tradeValues[i])) { //Bool check

                stackable = (Boolean) tradeValues[i]; //5 is the item Stackable 

        } else {

            //TODO: Implement exception

        }

    }


    //Calls ShopTrader() method shopTrader

    ShopTrader trade = new ShopTrader();

    trade.shopTrader(targetName, itemName, itemQuantity, minCoins, minBuy, worldHop, stackable);

}

我觉得像这样使用 for 循环不是我遍历这些对象的正确方法,我不应该为每个变量检查 i==。


它还阻碍我向 shopTrader 方法添加重载,因为我必须为每个重载编写一个全新的 for 循环。


有没有人有更优雅的解决方案来从这个数组中获取变量?


阿晨1998
浏览 112回答 1
1回答

千万里不及你

我认为与其将所有信息存储在 Object[] 中,不如创建一个新类来充当数据结构,即public class TradeValue {&nbsp; &nbsp; String targetName;&nbsp; &nbsp; int itemQuantity;&nbsp; &nbsp; // etc.&nbsp; &nbsp; String getTargetName() {&nbsp; &nbsp; &nbsp; &nbsp; return targetName;&nbsp; &nbsp; }&nbsp; &nbsp; String getItemQuantity() {&nbsp; &nbsp; &nbsp; &nbsp; return itemQuantity;&nbsp; &nbsp; }&nbsp; &nbsp; // etc}然后您可以直接访问信息TradeValue defaultValues = shop.defaultValues;String targetName = defaultValues.getTargetName();int itemQuantity = defaultValues. getItemQuantity();...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java