1

如何在 Java 不兼容的类型中为这个函数赋值?

public class CustomerInfo implements Serializable {

    private static final long serialVersionUID = 9083257536541L;
    protected String id;
    protected String searchkey;
    protected String taxid;
    protected String name;
    protected String postal;

    /** Creates a new instance of UserInfoBasic */
    public CustomerInfo(String id) {
        this.id = id;
        this.searchkey = null;
        this.taxid = null;
        this.name = null;
        this.postal = null;
    }

    public String getId() {
        return id;
    }    

    public String getTaxid() {
        return taxid;
    }    

    public void setTaxid(String taxid) {
        this.taxid = taxid;
    }

    public String getSearchkey() {
        return searchkey;
    }

    public void setSearchkey(String searchkey) {
        this.searchkey = searchkey;
    }

    public String getName() {
        return name;
    }   

    public void setName(String name) {
        this.name = name;
    }

    public String getPostal() {
        return postal;
    }   

    public void setPostal(String postal) {
        this.postal = postal;
    }    

    public String printTaxid() {
        return StringUtils.encodeXML(taxid);
    }

    public String printName() {
        return StringUtils.encodeXML(name);
    }

    @Override
    public String toString() {
        return getName();
    }    
}

  private CustomerInfo selectedCustomer;

  public CustomerInfo getSelectedCustomer() {
        // construct a CustomerInfo from the data in your String

        return selectedCustomer;
    }


 private void jcmdOKActionPerformed(java.awt.event.ActionEvent evt) { 

           selectedCustomer = (CustomerInfo) jListCustomers.getSelectedValue();
            //test code
            String testing  = m_jtxtName.getText();
              System.out.println("Now the selectedCustomer is dispayed!");
            System.out.println(selectedCustomer);
             System.out.println(testing);
       //test code
            dispose();       
        }

在上面显示的代码中,我需要将字符串测试值分配给selectedCustomer. 如何分配值?这是我得到的错误:

selectedCustomer = m_jtxtName.getText();

incompatible types
    required: CustomerInfo
    found:    String
4

2 回答 2

2

你不能!!!

selectedCustomer是一个类型的对象 CustomerInfo

m_jtxtName.getText()返回一个String

您不能将字符串分配给 CustomerInfo。

可能您需要执行以下操作:

int id = 1; //Or whatever new id you have.
String name = m_jtxtName.getText(); 
selectedCustomer = new CustomerInfo(name); //or whatever id you have.
selectedCustomer.setName(name);    //or whatever name you have.

编辑:

您的课程缺少某些内容。要么它需要 setter 方法(它现在只有 getter,所以你不能将其他属性设置为名称等)或者它需要一个带有四个参数的构造函数,例如:

public CustomerInfo(String id, String searchKey, String taxid, String name, String postal) {
    this.id = id;
    this.searchKey = searchKey;
    // etc

在这种情况下,您的屏幕中可能有六个 jtextfield,因此用户可以填写所有字段并通过将所有参数传递给构造函数来创建 Customerinfo 对象。

于 2013-05-28T10:01:52.250 回答
1

您不能通过简单地将 String 转换为CustomerInfo对象来做到这一点,但您可以扩展您的CustomerInfo但您可以尝试这样的事情:

public class CustomerInfo {
    [...]
    public static CustomerInfo createCustomerInfo(String data) {
        // construct a CustomerInfo from the data in your String

        return createdCustomerInfo;
    }
}

我不知道你在那个字符串中有什么数据,所以我不能给你如何实现它的建议。例如,如果它是 ID,您可以使用它从数据库或类似的东西中检索 CustomerInfo。

于 2013-05-28T10:11:30.637 回答