2017-02-13 40 views
-3

我试图使用对象数组在我的项目,我得到一个错误:不兼容类型:对象不能没有转换为字符串在java中的NetBeans

incompatible types: Object cannot be converted to String 

在这条线:

ST1 = new String[]{emt1, emt2, emt3, emt4}; 

现在我不知道这个错误的原因是什么。请帮帮我 。

Object[] ST1; 
Object emt1,emt2,emt3,emt4; 


private void jButton3ActionPerformed(ActionEvent evt) { 
    try { 
     emt1 = null; 
     emt2 = null; 
     emt3 = null; 
     emt4 = null; 
     ST1 = new String[]{emt1, emt2, emt3, emt4}; 
    } 
     .... 
+2

你能告诉我们你到底想做什么,因为我不明白你的程序的概念。 – Michael

+1

不应该是'new Object [] {...}'? –

+0

为什么要声明四个'Object'变量并尝试将它们放入一个'String'数组中? – khelwood

回答

2

你有两种方式一种是投的每一个对象emt1,emt2,..为String这样的:

ST1 = new String[]{(String)emt1, (String)emt2, (String)emt3, (String)emt4}; 

还是应该改变你的属性的类型:

Object emt1, emt2, emt3, emt4; 

字符串

String emt1, emt2, emt3, emt4; 
ST1 = new String[]{emt1, emt2, emt3, emt4}; 
+0

谢谢@YCF_L。你的答案也适用于我,并且非常明确地比顶部 – user3518835

+0

上的一个灯塔更受欢迎@ user3518835 :) –

0

一个字符串是一个对象,但一个对象不一定是一个字符串。

您尝试使用变量,它们是编译器期望字符串的对象,编译器告诉您这样做。也许emt1,emt2,emt3和emt4变量应该被声明为String? (难以从给出的片段中看出)。

1

您已经声明emt1,emt2,emt3,emt4Object。在创建将数组分配给变量ST1的最后一行中,您正在创建一个String数组并在其中存储Object实例。这是导致问题的原因。

如果你想使用的对象以这种方式,如果你是确保emt1,emt2,emt3,emt4对象都是字符串,就可以强制转换添加到您的代码是这样的:

ST1 = new String[] { (String) emt1, (String) emt2, (String) emt3, (String) emt4 }; 

这应该工作。

+1

谢谢@Anacron。你的答案适合我。 – user3518835

相关问题