проблемы - никакой способ получить количество строк автоматически (что я знаю о).
существует стандартный трясиной способ сделать это, для которого много людей (включая MS) определяет макросы как arraysize
:
#define arraysize(ar) (sizeof(ar) / sizeof(ar[0]))
Что ж, я думаю, вы могли бы запускать свои 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();
}
Обычно не рекомендуется расширять Поток
или другие классы, если в этом нет необходимости.
Можно использовать аннотации Java для создания шаблонный код. Написать собственный обработчик аннотаций несложно.
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.
В случае с потоком вы можете передать его конструктору любой объект, реализующий Runnable
.
Итак, решение состоит в создании собственного класса:
public class MyClass implements Runnable {
void run() {
// change this line
}
}
К сожалению, run не является статическим, поэтому вам сначала нужно создать экземпляр MyClass:
new Thread(new MyClass()).start();
Вы также можете добавить переменные в MyClass и конструктор, чтобы передавать ему аргументы.
Изменить: если вам нужно больше, чем просто метод запуска, вы также можете создать подкласс Thread
.
Нет, макросов нет. В этом случае самое близкое, что вы можете сделать, - это создать новый экземпляр Runnable и передать его либо функции, созданной вами, либо ExecutorService, которая запустит задачу за вас.
С Java нет хорошего способа получить избавиться от этого «шаблонного» кода, главным образом потому, что вы не можете передавать указатели на функции; все должно быть объектом.