实现JFXTreeTableView时遇String类型不兼容错误,求助解决
兄弟,我一眼就看出你这个问题的根源了——你不小心导入了错误的String类,导致和SimpleStringProperty需要的参数类型不匹配,才会报这个incompatible types的编译错误,同时IDE给那三个参数标红下划线。
错误原因详解
你看到的错误提示里提到的com.sun.org.apache.xpath.internal.operations.String是Apache XPath内部的一个操作类,根本不是我们日常用来表示字符串的java.lang.String。而SimpleStringProperty的构造方法需要的是标准的java.lang.String类型,这俩完全不是一回事,编译器自然会报错。
大概率是你写代码的时候,IDE自动补全选错了类,或者复制教程代码的时候带了错误的导入语句。
解决方案
按下面的步骤来,分分钟搞定:
检查并删除错误的导入语句
打开你的类文件顶部,找到类似这样的导入行,直接删掉:import com.sun.org.apache.xpath.internal.operations.String;不用担心
java.lang.String的导入问题,因为java.lang包下的所有类都是默认自动导入的,删掉错误导入后,编译器会自动使用正确的String类。(可选)显式指定类型(如果IDE仍有提示)
要是删掉错误导入后,IDE还是有点“犯迷糊”,你可以在构造方法的参数上显式指定java.lang.String,比如:public User(java.lang.String department, java.lang.String age, java.lang.String userName) { this.department = new SimpleStringProperty(department); this.userName = new SimpleStringProperty(userName); this.age = new SimpleStringProperty(age); }不过这步只是兜底,正常情况下删掉错误导入就够了。
小提醒
以后遇到这种“类型不兼容”的错误,第一时间去看导入语句——很多时候都是不小心导入了重名的非预期类,尤其是那些带com.sun或者其他第三方包前缀的类,一定要注意区分。
内容的提问来源于stack exchange,提问作者user9559135

