我會盡量保持簡短。我正在嘗試做這樣的事情:public enum Fruit { APPLE("Apple", appleHelper::doAppleThing), ORANGE("Orange", orangeHelper::doOrangeThing); private String name; private Function<String, List<T>> fruitFunction; Fruit(String name, Function<String, List<T>> fruitFunction) { this.name = name; this.fruitFunction = fruitFunction; } public String getName() { return name; } public <T> List<T> applyFruitFunction(String someString) { return fruitFunction.apply(someString); }}這樣以后,我可以有一個方法private <T> List<T> doFruitThing(String someString, Fruit fruit) { List<T> transformedFruits = fruit.applyFruitFunction(someString); if (transformedFruits.isEmpty()) { throw new FruitException("There was no fruit of type " + fruit.getName()); } return transformedFruits;}我在這里遇到了兩個問題。doAppleThing而doOrangeThing不是靜態的方法,最好將保持下去,我無法找到創建的本地實例的任何方式appleHelper,并orangeHelper讓方法參考工作。即使我將方法設為靜態,枚舉也不能具有 Type 參數,因此無法將其Function<String, List<T>> fruitFunction作為字段。有沒有辦法做到這一點?或者有更好的方法來解決這個問題?
添加回答
舉報
0/150
提交
取消