Java编译unchecked警告求助:ObservableList未指定泛型类型
解决JavaFX代码编译时的unchecked警告问题
你遇到的警告源于代码中使用了原始类型的ObservableList,未指定泛型参数,导致编译器无法验证添加元素的类型安全性。
问题原因
代码中这一行:
ObservableList list = root.getChildren();
ObservableList是泛型接口,此处未指定它要存储的元素类型,属于原始类型使用。调用list.add(text)时,编译器无法确认text是否符合该列表的预期元素类型,因此抛出unchecked警告。
解决方案
给ObservableList明确指定泛型类型Node(JavaFX中Group的子元素均为Node子类,Text也继承自Node),修改后的代码行如下:
ObservableList<Node> list = root.getChildren();
这样编译器就能在编译阶段校验元素类型,消除警告。
修改后的完整代码
import javafx.application.Application; import javafx.collections.ObservableList; import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.scene.text.Font; import javafx.scene.text.Text; public class DisplayingText extends Application { @Override public void start(Stage stage) { Text text = new Text(); text.setFont(new Font(45)); text.setX(50); text.setY(50); text.setText("Welcome my friend!"); Group root = new Group(); ObservableList<Node> list = root.getChildren(); list.add(text); Scene scene = new Scene(root, 600, 300); stage.setTitle("Sample Application"); stage.setScene(scene); stage.show(); } public static void main(String args[]) { launch(args); } }
编译提示翻译
C:\Users\Resul\Desktop\Skills\For Java>javac -Xlint:unchecked DisplayingText.java
DisplayingText.java:25: 警告: [unchecked] 对原始类型List的成员add(E)进行未检查的调用
list.add(text);
其中, E是类型变量:
E扩展已在接口List中声明的Object
1 个警告
C:\Users\Resul\Desktop\Skills For Java>
内容的提问来源于stack exchange,提问作者Resul Haydarmyradov
相关产品推荐
相关产品推荐

