如何正确使用类类型的参数?

J. *_*idt 0 java parameters inheritance class

在java中,我想做这样的事情

    public class Tata{ 

        public static void f(){
            //something
        }
        public static void g(){
            //something
        }
    }

    public class Titi{ 

        public static void f(){
            //something
        }
        public static void g(){
            //something
        }
    }

    public class Toto{

        private Class c = Tata.class; //or Titi.class 

        public static void main(String[] args) {
            c.f();
            c.g();
        }
    }
Run Code Online (Sandbox Code Playgroud)

准确地说,我希望能够在TataTiti类之间自由切换,使用它们各自的方法fg

这不能按预期工作,因为我收到了无法解析方法 'f()' 的错误。简单地替换cf(); cg(); Tata.f(); Tata.g(); 工作正常,但违背了使用参数的目的。如何解决这个问题?

Mic*_*dis 5

毕竟将评论变成答案..处理您想要的正确(Java)方法是使用接口。因此,在您的演示代码中,实现如下:

public interface TheFGFunctions {
    void f();
    void g();
}
public class Tata implements TheFGFunctions {
    @Override
    public void f() {
        //something
    }
    @Override
    public void g() {
        //something
    }
}
public class Titi implements TheFGFunctions {
    @Override
    public void f() {
        //something
    }
    @Override
    public void g() {
        //something
    }
}
public class Toto {
    private TheFGFunctions c;
    public Toto(TheFGFunctions c) {
        this.c = c;
    }
    public void notStaticFunction() {
        c.f();
        c.g();
    }
}
Run Code Online (Sandbox Code Playgroud)

这种方式是完全类型安全的,处理零异常!