Quiero usar .startsWith en caso de cambio en Java pero espera String y no un valor booleano. Intenté crear una función contenedora para él y devolver String, pero recibo un error que dice constant expected
Quiero convertir el siguiente bloque if-else en caso de cambio
if (currCmd.equals(allProduct)) { warehouseObj.viewItems(); } else if (currCmd.startsWith(buyProduct)) { // todo String productId = currCmd.substring(4); long lProductId=Long.parseLong(productId); cartProcessor.addItem(currUser.getUserid(),lProductId,currCart,warehouseObj); } else if (currCmd.equals(viewCart)) { cartProcessor.viewItems(currUser.getUserid(),currCart); } else if (currCmd.equals(checkout)) { cartProcessor.checkOut(currUser.getUserid(),currCart); } else if (currCmd.startsWith(delete)) { // todo String productId = currCmd.substring(7); long lProductId =Long.parseLong(productId); warehouseObj.deleteItem(lProductId, currUser.getIsAdmin()); } else if (currCmd.equals(addProduct)) { if (!currUser.getIsAdmin()) { System.out.println("PERMISSION DENIED"); } else { // remove sc Scanner sc = new Scanner(System.in); addProduct2Warehouse(warehouseObj, sc); } } else { System.out.println("INVALID COMMAND!"); }Suponiendo que currCmd es una cadena que puede parecerse a "buy $PRODUCT_ID" o "delete $PRODUCT_ID" para los comandos en comparación con startsWith , puede valer la pena extraer el "verbo" del comando y usarlo en el switch (usando la flecha más corta sintaxis de Java 12+):
String cmd = currCmd.split(" ")[0]; switch (cmd) { case ALL_PRODUCT -> warehouseObj.viewItems(); case BUY_PRODUCT -> { String productId = currCmd.substring(4); long lProductId = Long.parseLong(productId); cartProcessor.addItem(currUser.getUserid(), lProductId, currCart, warehouseObj); } case VIEW_CART -> cartProcessor.viewItems(currUser.getUserid(), currCart); case CHECKOUT -> cartProcessor.checkOut(currUser.getUserid(), currCart); case DELETE -> { String productId = currCmd.substring(7); long lProductId = Long.parseLong(productId); warehouseObj.deleteItem(lProductId, currUser.getIsAdmin()); } case ADD_PRODUCT -> { if (!currUser.getIsAdmin()) { System.out.println("PERMISSION DENIED"); } else { // remove sc Scanner sc = new Scanner(System.in); addProduct2Warehouse(warehouseObj, sc); } } default -> System.out.println("INVALID COMMAND!"); }