public interface IDataAccessObjectable
{}public interface IUserInfoDAO extends IDataAccessObjectable
{
//包含一些操作UserInfo表的操作。
}public class UserInfoDAO implements IUserInfoDAO
{
//具体实现IUserInfoDAO这个接口
}
//一个创建DAO的的工厂
/**
* DAO 数据访问对象工厂
*/
package com.vsoft.framework.security.persistent.dataaccessobjects.hibernate ;import java.util.HashMap ;
import java.util.Map ;
public class DAOSecurityFactory
{
private static Map < String , String > mapDAO = new HashMap < String , String > ( ) ; public DAOSecurityFactory ( )
{ } static
{
mapDAO
.put (
"UserInfoDAO" ,
"com.vsoft.framework.security.persistent.dataaccessobjects.hibernate.UserInfoDAO" ) ;
} public static IUserInfoDAO getIDAOUserInfo ( )
{
return new UserInfoDAO ( ) ;
} public static IDataAccessObjectable getDAOInstants ( String strDAOName )
throws ClassNotFoundException , IllegalAccessException ,
InstantiationException
{
if ( mapDAO.containsKey ( strDAOName ) )
{
String strFullName = ( String ) mapDAO.get ( strDAOName ) ;
return ( IDataAccessObjectable ) Class.forName ( strFullName )
.newInstance ( ) ;
}
else
{
return null ;
}
}}//以上这些编译都没有错误。//当我要创建接口的时候,编译出现错误了
IUserInfoDAO iUser = DAOSecurityFactory.getDAOInstants ( "UserInfoDAO" ) ;
//错误信息:
Type mismatch: cannot convert from IDataAccessObjectable to IUserInfoDAO A.java我是java的新手,看错误信息是类型错了,可是IUserInfoDAO是继承的空接口,怎么还没发转换类型?请问我这个问题该怎么解决?
{}public interface IUserInfoDAO extends IDataAccessObjectable
{
//包含一些操作UserInfo表的操作。
}public class UserInfoDAO implements IUserInfoDAO
{
//具体实现IUserInfoDAO这个接口
}
//一个创建DAO的的工厂
/**
* DAO 数据访问对象工厂
*/
package com.vsoft.framework.security.persistent.dataaccessobjects.hibernate ;import java.util.HashMap ;
import java.util.Map ;
public class DAOSecurityFactory
{
private static Map < String , String > mapDAO = new HashMap < String , String > ( ) ; public DAOSecurityFactory ( )
{ } static
{
mapDAO
.put (
"UserInfoDAO" ,
"com.vsoft.framework.security.persistent.dataaccessobjects.hibernate.UserInfoDAO" ) ;
} public static IUserInfoDAO getIDAOUserInfo ( )
{
return new UserInfoDAO ( ) ;
} public static IDataAccessObjectable getDAOInstants ( String strDAOName )
throws ClassNotFoundException , IllegalAccessException ,
InstantiationException
{
if ( mapDAO.containsKey ( strDAOName ) )
{
String strFullName = ( String ) mapDAO.get ( strDAOName ) ;
return ( IDataAccessObjectable ) Class.forName ( strFullName )
.newInstance ( ) ;
}
else
{
return null ;
}
}}//以上这些编译都没有错误。//当我要创建接口的时候,编译出现错误了
IUserInfoDAO iUser = DAOSecurityFactory.getDAOInstants ( "UserInfoDAO" ) ;
//错误信息:
Type mismatch: cannot convert from IDataAccessObjectable to IUserInfoDAO A.java我是java的新手,看错误信息是类型错了,可是IUserInfoDAO是继承的空接口,怎么还没发转换类型?请问我这个问题该怎么解决?
你这里的问题就相当于
把父类转成子类的,显然是不行的
改成:
IdataAccessObjectable iUser = DAOSecurityFactory.getDAOInstants ( "UserInfoDAO" ) ;
就可以了
{
String strFullName = ( String ) mapDAO.get ( strDAOName ) ;
return Class.forName ( strFullName )
.newInstance ( ) ;
}
/////////////////////////IUserInfoDAO iUser =(IUserInfoDAO )DAOSecurityFactory.getDAOInstants ( "UserInfoDAO" ) ;