骡子 4 java class 呼叫

Mule 4 java class call

好的,我已经在这里设置了我的 mule 4 应用程序,创建了一些 java class 来模拟掷骰子并将其连接起来。它可以编译,但是当我尝试点击它时出现此错误:

"Invocation of static Method 'rollDie(java.lang.String)' from Class 'objects.Dice' with arguments [java.lang.String sides] resulted in an error.

预期参数是 [java.lang.String 边]

我有一个名为 Die 的小 ENUM

package objects;

public enum Die {
    FOUR,SIX,EIGHT,TEN,TWELVE,TWENTY,HUNDRED;
}

我的主要 java class 名为 Dice

package objects;

import java.util.Random;

    public class Dice {
        private static Random rand;
        
        public Dice()
        {
            rand = new Random();
        }
    
        public static int rollDie(String sides)
        {
            Die die = getDie(sides);
    //      Die die = Die.TWENTY;
            switch(die)
            {
                case FOUR:
                    return rand.nextInt(4)+1;
                case SIX:
                    return rand.nextInt(6)+1;
                case EIGHT:
                    return rand.nextInt(8)+1;
                case TEN:
                    return rand.nextInt(10)+1;
                case TWELVE:
                    return rand.nextInt(12)+1;
                case TWENTY:
                    return rand.nextInt(20)+1;
                case HUNDRED:
                    return rand.nextInt(100)+1;
                default:
                    return -1;  
            }
        }
        
        private static Die getDie(String input)
        {
            if(input.equals("4"))
                    return Die.FOUR;
            else if(input.equals("6"))
                    return Die.SIX;
            else if(input.equals("8"))
                    return Die.EIGHT;
            else if(input.equals("10"))
                    return Die.TEN;
            else if(input.equals("12"))
                    return Die.TWELVE;
            else if(input.equals("20"))
                    return Die.TWENTY;
            else if(input.equals("100"))
                    return Die.HUNDRED;
            else
                return null;
        }
    }

我的流程只是一个带有标准 http 侦听器的 /roll 上的侦听器。使用 class“objects.Dice”调用 rollDie() 并像这样传递 arg 的静态调用调用

{
  sides : "20"
}

不确定我做错了什么。任何人的任何见解?有人告诉我,由于最新版本的 mule 4,我不必使用 mule-artifact.json 文件执行导入操作,所以不确定我还能做些什么来显示此界面它正在获得正确的类型输入...帮助?

谢谢, 乔恩

你的骰子 class 是完全静态的。不需要实例。

除了...您的 random 变量仅在创建实例时才实际分配。

因此,这个class没有任何意义。它被设计成一个实用程序class,除非你创建一个实例,否则它是完全坏掉的,但实例是完全没用的。因此,要按照编写的方式使用它,您必须在某个时候创建​​一个实例,恰好一次,立即将这个实例扔进垃圾箱,然后继续使用静态方法。

此外,您的环境配置错误 - 请按照说明启用详细异常日志记录。开发一个错误让你 'it did not work' 并且没有更多细节的应用程序,从字面上看,比编写一个你确实得到一些反馈的应用程序复杂数百倍。

要解决此特定问题,private static Random rand = new Random();,然后删除无用的构造函数。