如何访问Java对象的某些部分?
我几乎可以肯定这个问题以前被问过,因为我肯定我不是第一个有这个问题的人,但我不知道正确的搜索词来获得我的答案,所以如果你能给我指出正确的方向,我将非常感激 我在Java类中有一个对象,当我鼠标悬停在上面时,该对象表示:如何访问Java对象的某些部分?,java,eclipse,object,Java,Eclipse,Object,我几乎可以肯定这个问题以前被问过,因为我肯定我不是第一个有这个问题的人,但我不知道正确的搜索词来获得我的答案,所以如果你能给我指出正确的方向,我将非常感激 我在Java类中有一个对象,当我鼠标悬停在上面时,该对象表示: variableName = Object[6] >[0] = "words in here" >[1] = "a few more words" >[2] = float >[3] = float >[4] = integer
variableName = Object[6]
>[0] = "words in here"
>[1] = "a few more words"
>[2] = float
>[3] = float
>[4] = integer
>[5] = integer
我想打印出“words in here”,并得到[5]中整数的值。我该怎么做?我试过两种方法,比如
String whatsNeeded = variableName[0];
String whatToGet = variableName.toString();
但这两个都得不到我想要的。事实上,variableName[0]给了我一个错误,variableName.toString()打印[Ljava.lang.Object;@blahblah]
关于如何获得我想要的字段,有什么建议吗?谢谢
String whatsNeeded = variableName[0];
给您一个错误,因为您有一个对象[]
类型,所以变量名[0]
有类型对象
,而不是字符串
。您必须向下转换它:字符串WhatsRequired=(字符串)变量名[0]
关于variableName.toString()
,数组数据类型上的toString
无法按预期工作,只能在内存中打印引用。应使用Arrays.toString(variableName)
获得正确的打印值
查看您的注释,您似乎无法通过[]
运算符访问变量名
的项。发生这种情况的原因可能是您将其分配给了对象
类型变量,例如:
Object[] array = new Object[6];
Object object = array;
array[0] // valid
object[0] // invalid, it is an array at runtime but not at compile time
如果是这种情况,则必须首先将其强制转换为数组:
Object asArray = (Object[])variableName;
String whatsNeeded = (String)asArray[0];
尝试铸造,例如:
String tmp=(String)varName[0];
执行此操作时:
variableName.toString()
您正在调用toString方法,因此需要知道它是如何工作的,或者可以重写该方法
现在,如果要打印数组中的一个元素,在本例中是第一个元素,则需要知道对象的类型,如果程序是动态的,则需要一组方法或仅“如果”语句来验证数组中的每个元素,最后必须对对象进行强制转换,例如:
if (variableName[0] instanceof String) {
((String)variableName[0]).toString();
}
我希望这些信息对你有帮助
祝你好运。好的,所以我尝试按照你的建议强制转换它,但出现的错误仍然存在。它说“表达式的类型必须是数组类型,但它解析为Object”。这有意义吗?可能你没有将数组存储在
对象[]中
变量,但在对象中
。请检查我的编辑。这与上面的答案遇到了相同的问题。问题是它不喜欢variableName后面的[]。它看起来像一个数组,但为了获取值,其行为显然不同