在这个例子中我有tempSocket1和tempSocket2,但我真的只想要其中一个.我只是包括两个显示我尝试了两种方法,但我不断收到错误,“Integer类型中的方法valueOf(String)不适用于参数(可选).”我认为这两种方法都是用于将字符串数据类型转换为整数的方法,但我不确定Optional部分如何更改整个系统.
private void showTextInputDialog() {
TextInputDialog changePort = new TextInputDialog("Settings");
changePort.setHeaderText("Change Port");
changePort.setContentText("Please enter port number to be used for establishing connection...");
Optional<String> result = changePort.showAndWait();
result.ifPresent(e -> {
Integer tempSocket1 = Integer.valueOf(result);
Integer tempSocket2 = Integer.parseInt(result);
}
);
}
解决方法:
你看,Integer.valueOf和Integer.parseInt方法需要一个String类型的参数,但是你传递一个Optional< String>.这就是错误发生的原因.可选的字符串和字符串不一样.
试想一下,如果选择< String>与String相同,是ArrayList< String>与String相同?将LinkedList< String>与String相同?那么HashMap< String,Integer>?它既是String又是Integer?
处理泛型类型与其泛型类型参数相同的混乱会带来破坏性!想象一下,在一个可选字符串上调用charAt!没有实施,没有人知道会发生什么……
所以是的,永远不要认为泛型类型与泛型类型参数的类型相同.
标签:java,type-conversion 来源: https://codeday.me/bug/20190628/1312017.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。