2013-05-28 47 views
1

如何在Java不兼容类型中为此函数赋值?如何在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 
+1

那么是......'selectedCustomer'大概是一个'CustomerInfo'类型的变量。你想如何从字符串创建一个'CustomerInfo'? –

+0

您需要从'm_jtxtName.getText();'构造'CustomerInfo'对象,该对象返回一个'String'。 – NINCOMPOOP

+0

多数民众赞成我的问题是有任何替代指派给selectCustomer – user2427965

回答

2

你不能!

selectedCustomerCustomerInfo类型的对象。

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方法(它只有现在干将,所以你不能设置其他属性,名称等),或者它需要有四个参数,像一个构造函数:

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

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

+0

你可以告诉任何替代指定值的'selectedCustomer' – user2427965

+0

编辑与建议。 – nakosspy

+0

但我需要创建一个'构造函数CustomerInfo' ...如果是这样的话? – user2427965

1

你不能简单地铸造一个字符串到CustomerInfo对象做到这一点,但你可以扩展你的CustomerInfo但你可以尝试这样的事:

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

     return createdCustomerInfo; 
    } 
} 

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

+0

我只是通过名字字符串 – user2427965

+0

如果这足以检索正确的CustomerInfo然后去它,否则你应该重新考虑你的Dropdown的价值 –

+0

请再次检查我的问题代码 – user2427965