(java.lang.String) cannot be applied to (java.lang.Object)

和自甴很熟 提交于 2019-12-04 06:51:55

That's because JComboBox.html.getSelectedItem() returns Object

public Object getSelectedItem()

And your method expects a string

public void addTopicToListner(String t)

If you're 100% sure the contents of your combobox are string you just have to cast it:

a.addTopicToListner( (String) topicCombobox.getSelectedItem());

And that's it.

This code sample reproduces exactly your compilation error:

class StringAndObject {
    public void workWithString( String s ) {} // We just care about 
    public void workWithObject( Object o ) {} // the signature. 

    public void run() {

        String s = ""; // s declared as String
        Object o = s;  // o declared as Object

        // works because a String is also an Object
        workWithObject( s );
        // naturally a s is and String
        workWithString( s );


        // works because o is an Object
        workWithObject( o );
        // compiler error.... 
        workWithString( o );

    }

}

Output:

StringAndObject.java:19: workWithString(java.lang.String) in StringAndObject cannot be applied to (java.lang.Object)
        workWithString( o );
        ^
1 error   

As you see, the last call (workWithString(o) ) doesn't compile even though it is a String object. It turns out the compiler only knows that o was declared as Object but it doesn't have a way to know if that object is a string or is something else ( a Date for instance ).

I hope this helps.

JComboBox.getSelectedItem() returns type Object, not String. You can call toString() on its result to return the string representation of your object. It looks as if you're trying to return a type of Topic, which means you'll need to override the toString() method on Topic to return the value you want.

Try the following code

topicCombobox.getSelectedItem() instanceof String ? (String)topicCombobox.getSelectedItem() : "Socks";

This is a temporary fix, because I don't know if the incoming getSelectedItem() is a String.
If you know it always will be just cast it

(String)topicCombobox.getSelectedItem()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!