Есть ли способ использовать Groovy и Java-код для одного и того же класса? - PullRequest
1 голос
/ 26 января 2011

Я в основном программирую на Groovy, но иногда это слишком медленно. Поэтому я пишу отдельный класс .java, помещаю код, который должен работать быстрее, в метод java и вызываю этот метод java из моего отличного кода.

Это приводит меня к двум отдельным файлам и двум отдельным классам. Можно ли как-нибудь встроить java-метод прямо в файл groovy, возможно, пометив его аннотацией, чтобы указать, что это java?

Ответы [ 2 ]

2 голосов
/ 27 января 2011

Это идея Groovy ++.Маркировка класса или метода с помощью аннотации @Typed приведет к тому, что он будет использовать статическую типизацию вместо динамической типизации, сохраняя при этом большую ценность groovy.

Хотя не совсем java, типизированные методы groovy ++ обычно работают стак же, как java.

Более подробная информация о groovy ++ доступна по адресу: https://code.google.com/p/groovypptest/wiki/Welcome

0 голосов
/ 27 мая 2011

Вам не нужно делать ничего особенного.

Просто напишите класс Java за классом groovy. 99% всего исходного кода Java также является допустимым исходным кодом.

class GroovyClass {
    def a;
    def doSomething(x,y) { return x*y; }
}
class JavaClass {
    SomeType someVar;
    public JavaClass() { /* ... */ } // some contructor
    public void doit(String a, int b) {} // full typed method, that is java
}

Groovy ++ - это нечто совершенно другое. JavaClass должен иметь все полностью типизированные, чтобы быть «Java», однако ваша проблема может быть решена гораздо проще, если вы просто используете типы в соответствующих классных методах.

class AnotherGroovyClass {
   // typed
   public Result someMethod(SomeArg arg1, SomeOtherArg arg2) {
   }
   def someVariable; // untyped
}

Если вы думаете, что отсутствие скорости происходит из-за динамического характера groovy, просто используйте полные типы в соответствующих точках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...