2009-05-27 2 views
4

коллега наткнулся на какой-то код, который выглядел так и не мог понять, как он мог собрать:Как этот код Java компилируется?

class FooClass { 
    public static void bar(String arg) { 
    System.out.println("arg = " + arg); 
    http://www.google.com 
    System.out.println("Done!"); 
    } 
} 

В принципе, был случайной URL вставила в середине методы, но javac не волновала ,

Мы разработали так, что я отправлю ответ, если никто не узнает, но я думал, что это достаточно интересно для публикации.

+0

BTW, это работает в C# (и, вероятно, C++) тоже. – GalacticCowboy

+3

Разрешен только один URL-адрес с каждым протоколом (один «http», один «https», один «ftp» и т. Д.). Джавак отчасти извращен. –

ответ

18

«http:» интерпретируется как ярлык. Далее следует комментарий конца строки.

+2

перерыв http; это просто секретная идентичность заявления GOTO, которое они продолжают говорить, это ЗЛО, и не будет составлять часть языка. Я понятия не имел, что в Java есть метки ... хотя я не хочу сказать, что я считаю GOTO и ярлыки такими же злыми, как многие другие ... –

2

Простой. Выделение на этом сайте показывает, почему.

http: есть ярлык, как в разрыве http;

//www.google.com - комментарий.

2

http: это ярлык. // начинает комментарий.

5

Вы этикетку

http: 

с последующим комментарием

//www.google.com 
2

"HTTP:" это метка, а часть после "//" это, конечно, комментарий

1

Другой пример с двумя HTTP: //

public class Main { 
    { 
     http://en.wikipedia.org/wiki/Hello_world_program 
     System.out.print("Hello "); 
    } { 
     http://java.sun.com/docs/books/tutorial/getStarted/application/index.html 
     System.out.println("World!"); 
    } 

    public static void main(String... args) { 
     new Main(); 
    } 
} 
Смежные вопросы