首页 > 解决方案 > 如何正确使用类类型的参数?

问题描述

在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();
        }
    }

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

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

标签: javaclassinheritanceparameters

解决方案


毕竟会把评论变成答案。处理你想要的东西的正确(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();
    }
}

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


推荐阅读