Мне нужен правильный синтаксис для получения определенного значения перечисления ChartValue (класс перечисления ChartValue) из конечного двумерного массива. Некоторые из этих возвращаемых значений зависят от того, выполнено или нет внешнее условие. Пожалуйста, сообщите, если реализация кажется не адаптированной.
chartsValues2DArray известен до компиляции и поэтому должен быть окончательным. Как видите, условие применяется только к определенным координатам (x,y).
private final static ChartValue[][] chartValues2DArray = (boolean condition) -> { //compilation error
{ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1,},
{ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1,},
{condition ? ChartValue.VALUE_1 : ChartValue.VALUE_2, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1,},
{ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1,},
{ChartValue.VALUE_1, ChartValue.VALUE_1, condition ? ChartValue.VALUE_1 : ChartValue.VALUE_2, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1,},
{ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, condition ? ChartValue.VALUE_1 : ChartValue.VALUE_2, ChartValue.VALUE_1,},
{ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1,},
{ChartValue.VALUE_1, ChartValue.VALUE_1, condition ? ChartValue.VALUE_1 : ChartValue.VALUE_2, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1,},
};
public static void main(String[] args){
boolean condition = isConditionMet();
int rowIndex=getRowIndex();
int colIndex=getColIndex();
//Current solution (compiles and works)
ChartValue chartValue = getChartValue(condition, rowIndex, colIndex);
//Desired solution
//ChartValue chartValue = chartValues2DArray[rowIndex][colIndex](condition); //Is such thing even possible????
//Print
System.out.println("chartValue: "+chartValue);
}
private static ChartValue getChartValue(boolean condition, int rowIndex, int colIndex){
//Local variable
ChartValue[][] chartValues2DArray = {
{ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1,},
{ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1,},
{condition ? ChartValue.VALUE_1 : ChartValue.VALUE_2, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1,},
{ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1,},
{ChartValue.VALUE_1, ChartValue.VALUE_1, condition ? ChartValue.VALUE_1 : ChartValue.VALUE_2, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1,},
{ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, condition ? ChartValue.VALUE_1 : ChartValue.VALUE_2, ChartValue.VALUE_1,},
{ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1,},
{ChartValue.VALUE_1, ChartValue.VALUE_1, condition ? ChartValue.VALUE_1 : ChartValue.VALUE_2, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1, ChartValue.VALUE_1,},
};
ChartValue chartValue = chartValues2DArray[rowIndex][colIndex];
return chartValue;
}
public enum ChartValue{
VALUE_1("VALUE_1"), VALUE_2("VALUE_2");
private String value;
private ChartValue(String value){
this.value = value;
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... nal-values