java有没有办法用数据和重写的toString方法创建匿名对象数组?
Object[] x = new Object[] {"Skye", "Eyks", 123}
{
@Override
public String toString()
{
return this[0] + " " + this[1] + " (" + this[3] + ")";
}
};
所以x.toString()
将返回“Skye-Eyks(123)”
NetBeans表示它需要一个分号,这是表达式的非法开始
我之所以要使用匿名数组类,是为了在组合框中显示数据,并在用户提交表单后获取数组中的所有其他数据
# 1 楼答案
不,这是不可能的
您的代码粘贴强烈建议另一种解决方案:
Java是一种静态的、名义上类型化的面向对象语言。Java非常不擅长处理存储在异类、非类型和未命名的“未知神秘抓取包”中的数据,这就是
Object[]
这大概就是你想要的:
现在,它有了结构(编译器现在知道了,你的编辑器现在可以帮你了):a}信息量大得多。现在,如果需要,您可以添加文档(您打算如何“记录”
Word
有getWord()
和getReverse()
这样的属性getReverse()
比{new Object[]
?),而且您还有灵活性的空间(例如,getReverse()
可以动态计算,而不是在构建时传递)现在可以编写采用
Word
的方法。这是:这几乎是不言而喻的。与此相比:
这是一大堆文档,更糟糕的是:这些文档是非结构化的——而对于一个实际的类,方法的名称可以承载大部分这方面的含义,并允许您独立地记录每个片段。您还可以将任何检查和其他代码分包到正确的位置,而不是最终出现这样一种情况:检查输入数组是否正确的代码需要在许多地方调用,并且您需要不遗余力地记录所有内容,如果传递无效输入会发生什么(而在Word的构造函数中,只需这样做一次)
如果由于外力(例如,传递给主函数的参数)而导致
Object[]
,那么总体目标是一次性地、尽快地将其转换为适当的对象,以便java代码尽可能不受这种异构、未类型化和未命名的mysterymeat的影响NB:是的,这意味着你需要为所有你能想到的东西创建大量的类,所以你最终会得到干净的代码。Lombok的^{} 和java15的记录都可以帮助解决这个问题