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)
准确地说,我希望能够在Tata和Titi类之间自由切换,使用它们各自的方法f或g。
这不能按预期工作,因为我收到了无法解析方法 'f()' 的错误。简单地替换cf(); 和cg(); 与Tata.f(); 和Tata.g(); 工作正常,但违背了使用参数的目的。如何解决这个问题?
毕竟将评论变成答案..处理您想要的正确(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)
这种方式是完全类型安全的,处理零异常!