/*
 * SignInFactory.java
 */
 
 package com.cxj.User;
 
 /*
  * 抽象工厂
  * @author cxj
  * @date 2002/07/23
  * @version 1.0.0
  */
  import com.cxj.Mail.Session;
  
  public abstract class SignInFactory {
   
  //note:目前仅仅提供mysql的数据存储
  private static String className = "com.cxj.User.MysqlSignIn";
 
  private SignInFactory signInFactory = null;
 
  /*
   * 生成className定义的类的实例
   * @return SignInFactory 的实例
   */
  public synchronized static SignInFactory getInstance() {
  if(signInFactory == null) {
  try {
  Class c = Class.forName(className);
  signInFactory = (signInFactory) c.newInstance();
  } catch (Exception ex) {
  com.cxj.Tool.File.log(ex.toString());
  return null;
  }
}
return signInFactory; 
  }
 
  /*
   * 返回描述用户信息的Session类
   * @param userName 用户名
   * @param domains 用户所在的域
   * @param passwd 用户密码
   * @return Session 描述用户信息
   */
  public abstract Session getSession(String userName,String domains,String passwd);
 }

解决方案 »

  1.   

    public Object 函数(strClassName)
    {
        Object obj = null;
        try
        {
            Class cls = Class.forName(strClassName);
            obj = cls.newInstance();
        }
        catch(Exception e){}
        return obj;
    }
      

  2.   

    public Object 函数(strClassName)
    {
        Object obj = null;
        try
        {
            Class cls = Class.forName(strClassName);
            obj = cls.newInstance();
        }
        catch(Exception e){}
        return obj;
    }
      

  3.   

    太谢谢了,就是这个阿。查了半天竟然没发现class的newInstance()方法.再次谢谢cxj_2000这位兄弟,以后还请多指教
      

  4.   

    import java.lang.reflect.*;public static Object getInstanceByName(String className){
        Class cl = Class.forName(className);
        return cl.newInstance();
    }
    //client:
        String className = "java.util.Vector";
        java.util.Vector vector = (java.util.Vector)getInstanceByName(className);其他RTTI信息可以用Reflection机制的其他相应类得到,例如Method,Constructor等。
      

  5.   

    这么多热心的兄弟,再次谢谢大家(刚才只看到一个回贴)thx again