Java: Есть ли поддержка макросов?

проблемы - никакой способ получить количество строк автоматически (что я знаю о).

существует стандартный трясиной способ сделать это, для которого много людей (включая MS) определяет макросы как arraysize:

#define arraysize(ar)  (sizeof(ar) / sizeof(ar[0]))
18
задан Legend 13 November 2009 в 22:32
поделиться

7 ответов

Что ж, я думаю, вы могли бы запускать свои java-файлы через препроцессор C ...

21
ответ дан 30 November 2019 в 06:12
поделиться

Вы можете использовать шаблон шаблона для создания базового класса который содержит общий код. Например:

public abstract class ThreadTemplate extends Thread
{

    public void run() {
        //reusable stuff
        doInThread();
        //more resusable stuff
    }

    abstract void doInThread();

}

Тогда запустить поток со стандартным кодом так же просто, как:

new ThreadTemplate{
   void doInThread() {
       // do something
   }
}.start();

Кроме того, менее элегантным решением, позволяющим сэкономить время на вводе текста, является использование функции шаблонов вашего ide. Вы можете найти некоторую информацию по их настройке в Eclipse здесь , а список полезных - на Полезные шаблоны кода Java Eclipse

18
ответ дан 30 November 2019 в 06:12
поделиться

Один из способов - поместить код в анонимный внутренний класс и передать его методу, который сделает все остальное.

interface SomeInterface {
    void fn();
}

    executeTask(new SomeInterface {
        public void fn() {
            // Change this line.
        }
    });

private void executeTask(final SomeInterface thing) {
     Thread thread = new Thread(new Runnable() { public void run() {
        //...
        //...
        //...
        thing.fn();
        //...
        //...
     }});
     thread.start();
}

Обычно не рекомендуется расширять Поток или другие классы, если в этом нет необходимости.

8
ответ дан 30 November 2019 в 06:12
поделиться

Можно использовать аннотации Java для создания шаблонный код. Написать собственный обработчик аннотаций несложно.

7
ответ дан 30 November 2019 в 06:12
поделиться

If it is something that you use in many projects, I would set this up in your IDE. For instance I use eclipse and if you go to Window->Preferences->Java->Editor->Templates you can setup your own templates, and then have them auto complete. For instance I always start typing sysout and then press tab, and eclipse has a built in template to replace that with System.out.println();

There are many pre-built templates in eclipse, so you could look at those for examples on syntax, if that is the IDE you use, if not there may be something similiar in other IDE's

This is very useful, and you could create one for any boiler code you find yourself writing a lot.

1
ответ дан 30 November 2019 в 06:12
поделиться

В случае с потоком вы можете передать его конструктору любой объект, реализующий Runnable .

Итак, решение состоит в создании собственного класса:

public class MyClass implements Runnable {
    void run() {
        // change this line
    }
}

К сожалению, run не является статическим, поэтому вам сначала нужно создать экземпляр MyClass:

new Thread(new MyClass()).start();

Вы также можете добавить переменные в MyClass и конструктор, чтобы передавать ему аргументы.

Изменить: если вам нужно больше, чем просто метод запуска, вы также можете создать подкласс Thread .

0
ответ дан 30 November 2019 в 06:12
поделиться

Нет, макросов нет. В этом случае самое близкое, что вы можете сделать, - это создать новый экземпляр Runnable и передать его либо функции, созданной вами, либо ExecutorService, которая запустит задачу за вас.

С Java нет хорошего способа получить избавиться от этого «шаблонного» кода, главным образом потому, что вы не можете передавать указатели на функции; все должно быть объектом.

0
ответ дан 30 November 2019 в 06:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: