Ответ 1
Ну, я думаю, вы можете запускать ваши java файлы через препроцессор C...
Мне просто интересно, как люди решают это. Я часто пишу один и тот же тип кода все время. Например:
new Thread() {
//...
//...
//...
//Change this line
//...
//...
}.start();
Я продолжаю менять строку, где говорится "Измените эту строку", а затем начните поток. Это изменение может быть одной строкой или несколькими строками. Как мне сжать этот код?
Ну, я думаю, вы можете запускать ваши java файлы через препроцессор C...
Вы можете использовать шаблон шаблона для создания базового класса, который содержит общий код. Например:
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
Один из методов заключается в том, чтобы поместить код в анонимный внутренний класс и передать его методу, который сделает все остальное.
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();
}
Как правило, не рекомендуется распространять Thread
или другие классы, если это не нужно.
Можно использовать аннотации Java для генерации кода шаблона. Написание собственного процессора комментариев не сложно.
Если это то, что вы используете во многих проектах, я бы установил это в вашей среде IDE. Например, я использую затмение, и если вы идете в Window- > Preferences- > Java- > Editor- > Шаблоны вы можете настроить свои собственные шаблоны, а затем автоматически их завершить. Например, я всегда начинаю вводить sysout, а затем нажимаю вкладку, а eclipse имеет встроенный шаблон, который заменяет System.out.println();
В eclipse есть много готовых шаблонов, поэтому вы можете посмотреть примеры для синтаксиса, если это IDE, которую вы используете, если не может быть что-то похожее в других IDE
Это очень полезно, и вы можете создать его для любого кода котла, который вы написали много.
Нет, нет макросов. В этом случае наиболее близким вы можете создать новый экземпляр Runnable и передать его либо функции вашего собственного создания, либо ExecutorService, которая запустит вашу задачу.
С Java нет хорошего способа избавиться от этого "шаблонного" кода, главным образом потому, что вы не можете передавать указатели на функции; все должно быть объектом.
В случае Thread вы можете передать любой объект, который реализует Runnable
его конструктору.
Итак, решение заключается в создании собственного класса:
public class MyClass implements Runnable {
void run() {
// change this line
}
}
К сожалению, запуск не является статичным, поэтому сначала нужно создать экземпляр MyClass:
new Thread(new MyClass()).start();
Вы также можете добавить переменные в MyClass и конструктор, чтобы вы могли передавать ему аргументы.
Изменить: если вам нужно больше, чем просто метод start, вы также можете подклассы Thread
.