В описании игры сказано, что «IPod 4-го поколения, IPhone 3GS, IPhone 4 не поддерживаются». И, тем не менее, на мой IPod 5-го поколения игра не установилась — «несовместима с этим iPod». Где ошибка — в системных требованиях или в чем-то еще?
помеченный одним пользователем бот автоматически идентифицируется на всех остальных ресурсах
А если некий пользователь-зловред специально пометит оппонента, как бота (и он автоматически так идентифицируется на всех остальных ресурсах)? Предусмотрен ли какой-нибудь механизм защиты?
Ну да, меня больше удивила переменная с временным индексом — я ожидал «рассовывания» по веткам первого свитча.
Хотя действительно — в случае сложного свитча (как у вас в примере) «протестного чувства» практически нет :-)
import java.io.PrintStream;
public class Test3
{
public static void main(String[] paramArrayOfString)
{
String str1 = "6R";
String str2 = str1; int i = -1; switch (str2.hashCode()) { case 1756:
if (str2.equals("5q")) { i = 2; } else { if (!str2.equals("6R")) break; i = 0; } break;
case -1386582880:
if (!str2.equals("blabla")) break; i = 1; } switch (i) {
case 0:
case 1:
System.out.println("Ok");
break;
case 2:
System.out.println("Fail");
}
}
}
О! Спасибо за пример!
Теперь можно посмотреть на Test2 — малость поинтереснее.
Исходник: public class Test2 {
public static void main(String[] args) {
String test = "6R";
switch(test){
case "6R":
System.out.println("Ok");
break;
case "5q":
System.out.println("Fail");
break;
}
}
}
Результат декомпиляции: import java.io.PrintStream;
public class Test2
{
public static void main(String[] paramArrayOfString)
{
String str1 = "6R";
String str2 = str1; int i = -1; switch (str2.hashCode()) { case 1756:
if (str2.equals("5q")) { i = 1; } else { if (!str2.equals("6R")) break; i = 0; } }
switch (i) {
case 0:
System.out.println("Ok");
break;
case 1:
System.out.println("Fail");
}
}
}
О как интересно.
Мне давно хотелось в java использовать string в switch
Исходник:
public class Test {
public static void main(String[] args) {
String test = "string0";
switch(test){
case "string0":
System.out.println("It's works!");
break;
}
}
}
Компилируем седьмой жабой — компилится, работает!
Смотрим декомпилером Test.class:
import java.io.PrintStream;
public class Test
{
public static void main(String[] paramArrayOfString)
{
String str1 = "string0";
String str2 = str1; int i = -1; switch (str2.hashCode()) { case -1881759169:
if (!str2.equals("string0")) break; i = 0; } switch (i) {
case 0:
System.out.println("It's works!");
}
}
}
Спасибо — и за ссылку на книжку, и за наводку на интернет-магазин. Доставка за 10 рублей в магазин, мимо которого я каждый день прохожу — это очень вкусно :-)
Ну, есть все еще эхи с большим трафиком. Год назад, например, я был Returning Officer в RU.MILITARY. И тогда там было дофига сообщений в день, да и сейчас.
Вроде бы SU.BOOKS еще жива. RU.LINUX.CHAINIK. RU.FTN.DEVELOP активизировалась.
А если некий пользователь-зловред специально пометит оппонента, как бота (и он автоматически так идентифицируется на всех остальных ресурсах)? Предусмотрен ли какой-нибудь механизм защиты?
Хотя действительно — в случае сложного свитча (как у вас в примере) «протестного чувства» практически нет :-)
import java.io.PrintStream;
public class Test3
{
public static void main(String[] paramArrayOfString)
{
String str1 = "6R";
String str2 = str1; int i = -1; switch (str2.hashCode()) { case 1756:
if (str2.equals("5q")) { i = 2; } else { if (!str2.equals("6R")) break; i = 0; } break;
case -1386582880:
if (!str2.equals("blabla")) break; i = 1; } switch (i) {
case 0:
case 1:
System.out.println("Ok");
break;
case 2:
System.out.println("Fail");
}
}
}
Теперь можно посмотреть на Test2 — малость поинтереснее.
Исходник:
public class Test2 {
public static void main(String[] args) {
String test = "6R";
switch(test){
case "6R":
System.out.println("Ok");
break;
case "5q":
System.out.println("Fail");
break;
}
}
}
Результат декомпиляции:
import java.io.PrintStream;
public class Test2
{
public static void main(String[] paramArrayOfString)
{
String str1 = "6R";
String str2 = str1; int i = -1; switch (str2.hashCode()) { case 1756:
if (str2.equals("5q")) { i = 1; } else { if (!str2.equals("6R")) break; i = 0; } }
switch (i) {
case 0:
System.out.println("Ok");
break;
case 1:
System.out.println("Fail");
}
}
}
Разумеется, возможны коллизии.
Впрочем, посмотрел для очистки совести и другим, более «низкоуровневым» — и, насколько я понял, там та же «пляска» с хешем и сравнением строки:
С английским — да, грешен :-(
Но вообще забавно. Надо будет посмотреть, сколько будут «стоить» эти новые синтаксическо-сахарные фичи.
Мне давно хотелось в java использовать string в switch
Исходник:
public class Test {
public static void main(String[] args) {
String test = "string0";
switch(test){
case "string0":
System.out.println("It's works!");
break;
}
}
}
Компилируем седьмой жабой — компилится, работает!
Смотрим декомпилером Test.class:
import java.io.PrintStream;
public class Test
{
public static void main(String[] paramArrayOfString)
{
String str1 = "string0";
String str2 = str1; int i = -1; switch (str2.hashCode()) { case -1881759169:
if (!str2.equals("string0")) break; i = 0; } switch (i) {
case 0:
System.out.println("It's works!");
}
}
}
Забавно они эту фичу реализовали.
Тогда погодим покупать вторую версию, дождемся третьей :-)
kirill.temnenkov@gmail.com
Чуть ли не половина трафика — «Сюда писать нельзя!»
Вроде бы SU.BOOKS еще жива. RU.LINUX.CHAINIK. RU.FTN.DEVELOP активизировалась.