Да, Blah.valueOf("A")
даст Вам Blah.A
.
Примечание, что имя должно быть точное совпадение, включая случай: Blah.valueOf("a")
и Blah.valueOf("A ")
оба бросают IllegalArgumentException
.
статические методы valueOf()
и values()
создаются во время компиляции и не появляются в исходном коде. Они действительно появляются в Javadoc, хотя; например, Dialog.ModalityType
шоу оба метода.
Синтаксис неверен, и я бы не рекомендовал его, даже если бы он был. Но если вы действительно хотите использовать подобную конструкцию, вы можете поместить свои значения в массив:
switch (array($var1, $var2, $var3)) {
case array(true, false, false):
echo "hello";
break;
}
Здесь нет ситуации переключения. У вас есть несколько условий:
if($var && !($var2 || $var3)) { ...
Я бы просто использовал if / else
if($var1 == true && $var2 == false && $var3 == false){
echo "Hello";
}
или
if($var1 && !($var2 && $var3)) {
echo "Hello";
}
Я не думаю, что ваш синтаксис верен.
Я бы вложил операторы switch.
Другой вариант - создать функцию, отображающую три параметры в целое число и используйте это в инструкции switch.
function MapBool($var1, $var2, $var3){
// ...
}
switch(MapBool($var1, $var2, $var3)) {
case 0:
echo "Hello";
break;
// ...
}
Это то, что раньше обрабатывалось поразрядными операторами:
if (($var1 << 2) & ($var2 << 1) & $var3) == 4) ...
... назад, когда «истина» была 1.
При этом вышесказанное является кратким , но его довольно сложно читать и поддерживать. Тем не менее, если у вас много похожих операторов, переключение / AND может быть способом получить контроль:
switch (($var1 << 2) & ($var2 << 1) & $var3)) {
case 0: // false, false, false
...stuff...
case 1: // false, false, true
...different stuff...
// all 8 cases if you REALLY care
}
Я не знаю - если вы действительно этого хотите - может преобразовать их все в строку, объединить и затем использовать полученную строку в вашем условии case?