如何使用java从“Class.forName(name).newInstance()”中获取当前字符串
这是我的代码:如何使用java从“Class.forName(name).newInstance()”中获取当前字符串,java,sql,mysql,Java,Sql,Mysql,这是我的代码: public static List populate(ResultSet rs, Class clazz) throws Exception { ResultSetMetaData metaData = rs.getMetaData(); int colCount = metaData.getColumnCount(); List ret = new ArrayList(); Field[] fiel
public static List populate(ResultSet rs, Class clazz) throws Exception {
ResultSetMetaData metaData = rs.getMetaData();
int colCount = metaData.getColumnCount();
List ret = new ArrayList();
Field[] fields = clazz.getDeclaredFields();
while (rs.next()) {
Object newInstance = clazz.newInstance();
for (int i = 1; i <= colCount; i++) {
try {
Object value = rs.getObject(i);
for (int j = 0; j < fields.length; j++) {
Field f = fields[j];
if (f.getName().replaceAll("_", "").equalsIgnoreCase(
metaData.getColumnName(i).replaceAll("_", ""))) {
BeanUtils.copyProperty(newInstance, f.getName(),
value);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
ret.add(newInstance);
}
rs.close();
return ret;
}
然后:
List cn_address=sd.getLastAddress(toNomber,last_2);
System.out.println(cn_address.get(0));
但它表明:
hdt.ChineseAddressBean@f0eed6
那么如何从cn_address.get0获取当前字符串
谢谢
这是我的ChineseAddressBean.java:
package hdt;
public class ChineseAddressBean {
String adress_reality = "";
public String getAdress_reality() {
return adress_reality;
}
public void setAdress_reality(String adress_reality) {
this.adress_reality = adress_reality;
}
}
更新1:
使用此选项时,会显示错误:
更新2:
这就是错误:
Object address = cn_address.get(0);
ChineseAddressBean chineseaddressbean = (ChineseAddressBean)address;
System.out.println(chineseaddressbean.getAdress_reality());
以上几行是实现所需的操作。请让我知道它是否工作。Meybe如果您需要在类实例中创建方法toString。cn\u address.get0返回一个对象,您应该将其转换为字符串。显然,您在cn\u address中获得了ChineseAddressBean类对象的列表。正当 那么如果你这样做了 列表cn\u地址=sd.getLastAddresstoNomber,last\u 2; System.out.printlncn\u address.get0 它将获取列表中的第一个元素并打印它。要打印它,它将尝试通过调用对象的toString方法将其转换为String。因此,如果您重写ChineseAddressBean类中的toString方法,并返回您想要打印的任何内容,它将完成以下操作您的bean中没有toString方法
public String toString() {
return adress_reality;
}
您的示例中没有提到需要将从列表中检索到的对象强制转换为适当的类型。
因此:
返回您访问的对象列表,而不是ChineseAddressBean。同样,当您打印它时,您调用默认的toString方法,该方法返回类名和哈希代码
您必须返回列表或将结果强制转换为您做错了的ChineseAddressBean
试试这个:
System.out.println(((ChineseAddressBean)(cn_address.get(0))).getAdress_reality());
您还可以为ChineseAddressBean编写toString方法,该方法返回地址字符串,然后您不必调用GetAddress\u reality。您如何在不迭代列表的情况下打印索引?您是否尝试过我的建议。您的列表是列表而不是列表。对象没有getAddress\u reality方法。您需要将其转换为ChineseAddressBean。@zjm1126,您如何在不迭代列表的情况下打印索引。?您是否尝试过我的建议。sql仅返回1个信息。看到极限了吗1@zjm1126,你能公布它显示的错误吗。
System.out.println((ChineseAddressBean)cn_address.get(0));
System.out.println(((ChineseAddressBean)(cn_address.get(0))).getAdress_reality());