我猜楼主的意思应该是
X x = null;
if(need XY){
  x = new XY();
}else{
  x = new XZ();
}
x.method();这是可以的,条件是XY和XZ必须实现(当X是接口)或继承X(当X是类).

解决方案 »

  1.   

    可以用Class类的getMethod()取得类中的方法。然后用Method.Invoke()调用。
      

  2.   

    先取得对应的Class 和方法签名 然后得到Method 然后invoke
    比如一个类 A 中有方法 test( String str );
    Class cl = Class.forName( "A" );
    Method method = cl.getMethod( "test", String.class );
    method.invoke( null, "hehe" );
      

  3.   

    哦 不对 因该是
    Method method = cl.getMethod( "test", new Class{ String.class } );
      

  4.   

    只要你的Class提供不带参数的构造函数就可以了。
    如下:
    Object a = Class.forName("YOUR CLASS NAME").newInstance() ;
    这样你就得到了Your class的具体实例a。我们的项目中就这样用过,在数据库中存类名,实际运用中根据需要动态获得具体的实例。不过我们的这些对象都是实现统一的接口,这样把Object换成接口名,才能调用到具体的方法否则你还得强制类型转换才能使用到你自己的类中的方法。
      

  5.   

    去看看《design pattern》中的state模式就行了,在Bruce Eckel的《Thinking in Java》中也有提到