2009-10-20 2 views
0

Есть ли инструмент/библиотека, которая позволяет мне автоматически импортировать пакеты Java вне среды IDE?Java-пакеты autoimports

Для instrance если я типа в блокнота что-то вроде:

JFrame f = new JFrame(); 

Затем запустите этот инструмент магии, а потом автоматически записывается в виде:

import javax.swing.JFrame 

.... 

JFrame f = new JFrame(); 

Есть ли что-то подобное? Это то, что приходит на ум, как использование образца:

import java.io.File; 


public class TesteImport { 

    public static void main(String[] args) { 
     AutoImport autoImport = new AutoImport(); 
     File clazz = new File("SampleClazz.java"); 
     autoImport.setImportClass(clazz); 
     autoImport.addLib("LibA.jar"); 
     autoImport.addLib("LibB.jar"); 
     autoImport.importAll(); 
    } 

} 
+0

Что вы имеете в виду? Можете ли вы рассказать о своей проблеме и о том, что вы пытаетесь ее решить? –

+1

Вы хотите ввести в блокнот что-то вроде: 'JFrame f = new JFrame()' и запустить этот инструмент * magic *, а затем автоматически записать: 'import javax.swing.JFrame' в свой код? Это вопрос? – OscarRyz

+0

Да !!! или для примера: импорт java.io.Файл; общественного класса TesteImport { \t государственной статической силы основных (String []) {арг \t \t AutoImport AutoImport = новый AutoImport(); \t \t Файл clazz = new File ("SampleClazz.java"); \t \t autoImport.setImportClass (clazz); \t \t autoImport.addLib ("LibA.jar"); \t \t autoImport.addLib ("LibB.jar"); \t \t autoImport.importAll(); \t} – 2009-10-20 17:26:39

ответ

0

В Eclipse, у вас есть Crtl-Shift-O (или Command-Shift-O на Mac). Возможно, вы могли бы вникнуть в исходный код Eclipse (с открытым исходным кодом) и найти код Java, который управляет этой функцией и повторно использовать ее. Удачи!

+0

Это выглядит так: http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.ui/core%20extension/org/eclipse/jdt/internal/corext/codemanipulation/ImportReferencesCollector.java?view = markup – Tim

+0

Он специально сказал «Вне IDE» –

+0

@Bill K: Я уже обратился к этому в своем ответе, предложив ему посмотреть исходный код, который заставляет эту функцию работать в среде IDE и делать то же самое. – Asaph

0

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

Единственным достойным случаем для генерации кода является то, что программист НИКОГДА не видит промежуточную версию - это случается с препроцессором C - она ​​делает промежуточную предварительно обработанную версию, которую вы никогда не видите.

Это означает, что вы можете захотеть, это что-то вроде Groovy. IIRC, groovy позволяет что-то вроде «import *» для импорта всего.

Дело в том, что Java - это скорее профессиональный инструмент - вы действительно НЕ ХОТИТЕ его делать сложные вещи. Многие программисты Java даже не любят «import java.util. *» И настаивают на расширении точного импорта, чтобы вы точно знали, с чего идет каждый класс.

С более светлыми языками, такими как groovy, ruby ​​и т. Д. Это не проблема, а более сложная.

PS. Если вам нужно использовать Java, честно говоря, ответ отрицательный, нет хорошего решения за пределами графического интерфейса среды разработки. Обнимите свой графический интерфейс.

+0

Я один из тех. Для фрагментов хорошо иметь импорт 'java.util. *;' Для производственного кода я бы настаивал на перечислении каждого из используемых классов. – OscarRyz

+0

Интересно, по крайней мере один или два голоса без комментариев. Мне очень жаль, что вам не нужно было давать какие-то сведения о том, почему вы голосуете ... Любое угадать, как я обиделся (или это просто неправильно?) –

+0

извините, я до сих пор не знаю, как использовать этот инструмент! – 2009-10-22 13:03:05

1

Даже если есть такой инструмент, он не будет работать автоматически автоматически без ввода пользователем.

Если у вас есть, например, этот код:

List myList; 

Он должен спросить, если List должно быть от java.awt.List или java.util.List.