Java 在switch语句Groovy中设置一个变量

Java 在switch语句Groovy中设置一个变量,java,groovy,switch-statement,Java,Groovy,Switch Statement,我试图使用switch语句来检查对象是否是特定类型的实例,如果是,我希望设置一个字符串变量,然后在方法的末尾返回它 每当我运行我的测试时,“detailMessage”总是返回为null,我是否在错误地执行切换情况 private String returnDetailMessage(Discount discountType, Object quantity, Object claims) { String detailMessage swit

我试图使用switch语句来检查对象是否是特定类型的实例,如果是,我希望设置一个字符串变量,然后在方法的末尾返回它

每当我运行我的测试时,“detailMessage”总是返回为null,我是否在错误地执行切换情况

 private String returnDetailMessage(Discount discountType, Object quantity, Object claims) {
            String detailMessage
            switch (objectType) {
                case objectType instanceof Percentage:
                    if (quantity > claims) {
                        detailMessage = "There are not enough discounted strings for you to do this"
                        break
                    } else {
                        detailMessage = "this is a discount string."
                        break
                    }
                case objectType instanceof FixedAmount:
                    if (quantity > claims) {
                        detailMessage = "There are not enough discounted Strings to cover the amount of quantity you have"
                        break
                    } else {
                        detailMessage = "there is a fixed amount here where quantity is less than claims"
                        break
                    }
            }
          return detailMessage
        }

您不需要使用instanceof,只需指定类即可

此外,当从折扣类型中提取字段时,我们只使用折扣类型,而不是特定的百分比/固定装载类型

private String returnDetailMessage(Discount discountType, Object quantity, Object claims) {
            String detailMessage
            switch (discountType) {
                case Percentage:
                    if (quantity > claims) {
                        detailMessage = "There are not enough discounted strings for you to do this"
                        break
                    } else {
                        detailMessage = "this is a discount string."
                        break
                    }
                case FixedAmount:
                    if (quantity > claims) {
                        detailMessage = "There are not enough discounted Strings to cover the amount of quantity you have"
                        break
                    } else {
                        detailMessage = "there is a fixed amount here where quantity is less than claims"
                        break
                    }
            }
          return detailMessage
        }