Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переписать код на Java. 
:(
    Опции темы
arcsupport
Дата 22.6.2011, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 24.10.2008

Репутация: нет
Всего: 2



Прочитал статью "Groovy за 15 минут". Как такой код переписать на Java:
Код
new groovy.xml.MarkupBuilder().html() {
    head() {
        title("This is the title")
    }
    body() {
        div("class" : "main") {
            p("this is the body")
        }
    }
}

PM MAIL   Вверх
Stolzen
Дата 24.6.2011, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 1
Всего: 48



На джаву такой код переписать не получится, так как в билдерах вызываются "псевдометоды" - и по названию этого псевдометода создается тег.
А в джаве эти псевдометоды просто нельзя будет вызвать.

Далее, в джаве нет анонимных функций, которые используются как еще один параметр к каждому методу.

Однако, если очень хочется попробовать это сделать, то можно через вызов invokeMethod(), который и используется для создания этих самых "псевдометодов".

Примерно вот так:
Код

import java.util.HashMap;
import java.util.Map;

import groovy.lang.Closure;
import groovy.xml.MarkupBuilder;

public class MrkpBuild {

    public static void main(String[] args) {
        new MrkpBuild().run();
    }
    
    @SuppressWarnings("serial")
    public void run() {
        final MarkupBuilder mb = new MarkupBuilder();
        
        mb.invokeMethod("html", new Closure<Void>(this) {
            public Void call() {
                mb.invokeMethod("body", new Closure<Void>(this) {
                    public Void call() {
                        
                        Map<String, String> params = new HashMap<String, String>();
                        params.put("class", "main");
                        
                        Object[] args = new Object[] {params, new Closure<Void>(this) {
                            public Void call() {
                                mb.invokeMethod("p", "this is the body");
                                
                                return null;
                            }
                        }};
                        
                        mb.invokeMethod("div", (Object)args);
                        
                        return null;
                    }
                    
                });
                return null;
            }
        });
    }
}


А еще проще - поставить груви и использовать его smile


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Groovy & Grails | Следующая тема »


 




[ Время генерации скрипта: 0.0584 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.