我使用NetBeans IDE在JavaFX中执行项目。 IDE会自动导入所有必需的import语句。它具体执行此操作,即只导入必要的import语句。以下是我的一个java应用程序中的import语句列表 -
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
如图所示,它是一长串的import语句。我发现的一个问题是它需要更多的代码行。为什么他们不使用下面的导入语句?
import java.sql.*;
import java.util.logging.*;
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.collections.*;
import javafx.event.*;
import javafx.geometry.Insets;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.text.*;
import javafx.stage.Stage;
这节省了大量代码。
两组import语句之间的实际差异是什么?为什么NetBeans专门使用import语句?
答案 0 :(得分:3)
让我演示一下通配符导入的最大问题之一:
import org.example.mylib.*;
import java.util.*;
class X {
List<String> xs;
}
在mylib
的2.0版中,您添加了一个名为List<T>
的类。您根本不接触源代码,源代码与添加的类无关。
如果您添加的List
定义了类X
使用的所有方法,则代码将成功构建,但运行时行为将因非常神秘的原因而发生变化。
答案 1 :(得分:2)
可以选择在NetBeans中配置星型导入。从菜单中选择工具 - &gt; 选项即可。点击顶部的编辑器按钮,然后点击格式化标签。从语言下拉列表中选择Java,然后从类别下拉列表中选择导入。现在您看到了几个声明导入的选项:Single Class,Package Imports或没有导入但在源中使用完全限定名称。可以进一步指定单个类,例如,在使用星型导入之前从包中导入的数量。