日期:2014-05-17  浏览次数:20718 次

java动态创建类对象
最近看hibernate存储对象很方便
private int insertStudent(student t1) 
{
try {
saveTs = session.beginTransaction();
session.save(t1);//存储一个学生信息到数据库
saveTs.commit();
存储对象的语句一样
private int insertWorker(worker t1) 
{
try {
saveTs = session.beginTransaction();
session.save(t1);//存储一个工人信息到数据库
saveTs.commit();
....
想将存储函数统一
private int insertObject(String className,Object obj)
{
try {
saveTs = session.beginTransaction();
session.save((Class.forName(className))obj);//此句语法不正确,想强制类型转换
saveTs.commit();
应该怎样写,怎样根据类名实例化对象呢
------解决方案--------------------
(Class.forName(className)).newInstance() 
这是创建一个新对象 ,你的用类转换工具,把obj的属性赋值给新创建的对象。

其实 就这么做就行了行了

protected <T> T getBean(Object bean, Class<T> c) {
try {
T obj = c.newInstance();
BeanUtils.copyProperties(obj, bean);
return obj;
} catch (Exception e) {

}
return null;
}

private int insertObject(String className,Object obj)
{
try {
saveTs = session.beginTransaction();
session.save(getBean(Class.forName(className),obj));
saveTs.commit();