日期:2014-05-20  浏览次数:20861 次

合代码,优化java代码
下边是一段示例代码,不知道可不可以把C类中的两个方法合成一个方法呢?
Java code

class A {
    private String name;
    public String getName();
    ……
}
class B {
    private String name;
    public String getName();
    ……
}
class C {
    public String getUserName (A a) {
        return a.getName();
    }
    public String getUserName(B b) {
        return b.getName();
    }
}




------解决方案--------------------
让 A B 都去继承一个借口~~~
借口里定义一个方法叫 getName
然后 C 调用 接口的 getName
------解决方案--------------------
Java code

interface I{
  String getName();
}

class A implements I{
    private String name;
    public String getName();
    ……
}
class B implements I{
    private String name;
    public String getName();
    ……
}
class C {
    public String getUserName (I i) {
        return i.getName();
    }
}

------解决方案--------------------
楼上你懂了~~呵呵
------解决方案--------------------
最简单的方法,把C作为抽象类,让A,B都继承自C
------解决方案--------------------
抽象类 接口 其实都差不多~~~感觉两者之间使用是反映了编程的思想~~

------解决方案--------------------
不建议你这样做哦~~

Java code

 public static String getUserName(Object o){
         try{
             A a=(A)o;
             return a.getName();
         }catch(Exception e){
             B b=(B)o;//这里应该才TRY CATCH 一下
             return b.getName();
             
         }
         
     }

------解决方案--------------------
Java code

class A {
    public String getName() {
        return "A";
    }
}

class B {
    public String getName() {
        return "B";
    }
}

class C {
    public String getName(Object o) throws Exception {
        if (o instanceof A) {
            return ((A) o).getName();
        }

        if (o instanceof B) {
            return ((B) o).getName();
        }

        throw new Exception("");
    }
}