我已经阅读了很多文章和文章,现在明白静态方法不能被继承。为了解释我的问题,你可以看看下面的代码片段:Java - 返回静态方法的继承
主类:
public class DataTable {
public String id;
public String date;
public String reserve() throws SQLException {
......
String query="insert into `" + this.getClass().getSimpleName() +"`() values()";
........
String key = ......
.......
return key;
}
}
一个子类:
public class Contact extends DataTable{
public String firstName;
public String lastName;
public String phoneNumber;
...........
}
有了这个,如果我需要在某个时间点预定联系人,我需要写:
Contact contact=new Contact();
String id = contact.reserve();
This Works。但我觉得这不是最佳。对我而言,第一行完全没用。我会更喜欢写作:
String id = Contact.reserve();
的代码将是更清洁和我猜想,它会在运行时使用更少的资源,因为它不会有,我们真的不需要建立联系的一个实例。但为此,我应该:
- 在每个子类中创建一个特定的reserve()静态方法,并将其从主类中移除。我真的不认为它会更好,因为我会在大量的类中使用完全相同的代码;
- 或使reserve()静态在主类中,并允许它访问调用它的类名,这在java中似乎不可行。
我希望我的问题很清楚。任何想法如何处理?还是应该保持原样?
我不明白为什么你觉得它不是最优的:代码是干净的,如果特定的'reserve'实现需要,你可以创建'Contact'的子类。甚至更好:将其作为实用方法并传递所需的参数,而不是进行这种*'静态'继承*。 –