我最近查看了有关Swing#JTable的Oracle教程上发布的一些代码。 IntelIJ返回了一些关于在保存表数据的多维数组中装箱原始变量的警告消息。
找到的数组来自docs.oracle.com:
Object[][] data = {
{"Kathy", "Smith",
"Snowboarding", new Integer(5), new Boolean(false)},
{"John", "Doe",
"Rowing", new Integer(3), new Boolean(true)},
{"Sue", "Black",
"Knitting", new Integer(2), new Boolean(false)},
{"Jane", "White",
"Speed reading", new Integer(20), new Boolean(true)},
{"Joe", "Brown",
"Pool", new Integer(10), new Boolean(false)}
};
所有包装的变量都收到此消息:
“不必要的拳击'新整数(5)' 举报“拳击”,例如在对象中包装原始值。在Java 5及更新版本下不需要拳击,可以安全地删除。 此检查仅报告项目或模块是否配置为使用5.0或更高的语言级别。“
我知道Java中装箱和拆箱的概念,我的问题是为什么它在新版本的Java中'无关',因为我看到很多开发人员在讨论或最近使用它
另外,由于不需要装箱,应该用'
替换'new Integer(5)'答案 0 :(得分:25)
感谢Java 5及更新版本中的自动装箱,您不必将Integer和Boolean构造函数调用到手动" box"原始价值观。 IDE似乎建议您将代码编写为:
Object[][] data = {
{"Kathy", "Smith", "Snowboarding", 5, false},
{"John", "Doe", "Rowing", 3, true},
{"Sue", "Black", "Knitting", 2, false},
{"Jane", "White", "Speed reading", 20, true},
{"Joe", "Brown", "Pool", 10, false}
};
答案 1 :(得分:-1)
装箱用于存储非基本的对象值,例如“ int”。由于“ Integer”类使用静态方法返回装箱的值,因此可以使用以下方法:
@client.command(pass_context=True)
async def sleep(ctx):
client.pause = True
@client.command(pass_context=True)
async def awake(ctx):
client.pause = False