java genric类不工作去润滑
我无法使用Integer生成泛型类。它可以处理字符串,但当涉及整数时,它会说Java已经否决了被重写的API。 我可以为泛型整数类型做什么java genric类不工作去润滑,java,generics,integer,Java,Generics,Integer,我无法使用Integer生成泛型类。它可以处理字符串,但当涉及整数时,它会说Java已经否决了被重写的API。 我可以为泛型整数类型做什么 这不是泛型本身的问题 弃用警告实际上是关于这一行的: s2.SetData(new Integer(5)) Integerint构造函数一直以来都是个坏主意,现在正式反对使用Java9以后的构造函数。报告说: 不赞成。使用此构造函数很少是合适的。静态出厂值OFIT通常是更好的选择,因为它可能产生显著更好的空间和时间性能 你应该把上面的内容写成
这不是泛型本身的问题 弃用警告实际上是关于这一行的:
s2.SetData(new Integer(5))
Integerint构造函数一直以来都是个坏主意,现在正式反对使用Java9以后的构造函数。报告说:
不赞成。使用此构造函数很少是合适的。静态出厂值OFIT通常是更好的选择,因为它可能产生显著更好的空间和时间性能
你应该把上面的内容写成
s2.SetData(Integer.valueOf(5))
或者更好:
s2.SetData(5)
并依靠自动装箱
新整数5的问题是:
语义有点不同;e、 g
new Integer(5) != new Integer(5)
Integer.valueOf(5) == Integer.valueOf(5)
它可能会不必要地创建整数对象
在将来的某个时刻,当值类型完全实现时,在某些用例中,不推荐使用的表单可能会出现完全错误
作为记录,如果您遵循原始警告中的建议,您将得到以下信息:
$ javac Genric.java
Genric.java:24: error: cannot find symbol
s2.getdata();
^
symbol: method getdata()
location: variable s2 of type Student<Integer>
Note: Genric.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error
$ javac -Xlint:deprecation Genric.java
Genric.java:23: warning: [deprecation] Integer(int) in Integer has been deprecated
s2.SetData(new Integer(5));
^
Genric.java:24: error: cannot find symbol
s2.getdata();
^
symbol: method getdata()
location: variable s2 of type Student<Integer>
1 error
1 warning
$
泛型参数名称通常是一个大写字母
class Student<T> // correct
class Student<Type> // incorrect
这简直太难看了。每个二进制运算符前后都应该有一个空格
1-我注意到有人已经帮助修复了很多样式错误。我指的是你最初发布的代码样式;i、 你想让我们读的东西
2-必须针对名称拼写错误的API编写代码,这真是让人恼火。大多数人会原谅你,如果你写的是颜色对颜色,以及其他情况下有替代拼写。但如果您不确定,请查字典。您能从控制台打印出准确的错误吗。问题很不清楚。@martijnp我实际上只是将所有内容缩进4个空格,以便将其格式化为代码。@Sweeper我指的是第一行,根据您在学生类定义后面添加的更改,在该标识被解释为html标记而未显示之前。在格式化之后,它变得可见。@martijnp如果您查看并列标记,它显示在编辑之前存在。问题是,因为它没有被格式化为代码,所以它没有被呈现,因为HTML。
getData // correct
GetData // incorrect
getdata // incorrect
class Student<T> // correct
class Student<Type> // incorrect
s= "what the heck";