2016-06-19 5 views
0

Я кодирую приложение Java, которое читает файл .MID и генерирует .java (который при компиляции и исполнении генерирует WAV-файл), однако, сгенерированный .java-файл cointains очень большой метод конструктора, поэтому сгенерированный код не будет компилироваться. Я знаю максимальный размер 64kb для каждого метода, но есть ли способ его изменить? Благодаря!Ошибка: слишком большой код в сгенерированном файле Java

+2

Есть ли у вас какие-либо основания для генерации Java-файл ? – MCMastery

+0

Разве вы не можете разбить его на несколько файлов? – GreenThor

+0

Просто делайте это как упражнение, чтобы лучше узнать о Java Sound MCMastery. Я пробовал с некоторыми меньшими MIDI-файлами, чтобы увидеть, работает ли это, и это работает. Теперь это будет разделено на более мелкие методы, такие как дорукайхан. –

ответ

1

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

Вот пример метода (не обязательно конструктор, на самом деле вы можете разбить все методы) разбиваются на более мелкие методы:

public int doLotsOfStuff(String arg0, int arg1, boolean arg2, BiFunction<Boolean, String, Integer> arg3){ 
    arg0 = reverse(arg0); 
    foo(arg1, arg2); 
    return bar(arg0, Integer.valueOf(arg1), arg2, arg3); 
} 

String reverse(String arg0){ 
    StringBuilder foobar = new StringBuilder(arg0); 
    foobar.reverse(); 
    return foobar.toString(); 
} 

void foo(int arg0, boolean arg1){ 
    System.out.println(arg1 ? ~arg0 : arg0); 
} 

<A, B> int bar(String arg0, A arg1, B arg2, BiFunction<B, String, A> arg3){ 
    return String.valueOf(arg3.apply(arg2, arg1)).concat(arg0).hashCode(); 
} 
+0

В несвязанной точке, может ли все ** не ** расспрашивать об общей здравомыслие вещей 'doLotsOfStuff'? – dorukayhan

+0

Я тестировал несколько MIDI-мониторов, чтобы увидеть, работает ли это. Это действительно работает. Я попробую изменить приложение, чтобы разбить созданные методы, как это, спасибо! –