【发布时间】:2016-01-02 04:52:47
【问题描述】:
好的,我会尽量具体一点。
我有一个主类 InputHandler 和它下面大约五个方法。然后我有六个其他类,每个类下都有大约十个方法。每个类都有自己的 main 方法,它按顺序调用那个特定的类中的方法。请注意,除了 inputHandler 之外的每个类都有一个名为 priority 的变量,它存储一个从 0 到 10 的整数。
例如,
class helloWorld
{
String name; int age;
int priority = 2;
public static void main()
{
setName("John");
setAge(32);
}
public static void setName(String n)
{
name = n;
}
public static void setAge(int a)
{
age = a;
}
}
和其他类似的类。
但是主类是所有其他类的扩展。
所以订单看起来类似于:
helloWorld > helloCountry > helloTown > inputHandler (其中 a > b 表示 b 扩展 a)
这样可以保证之前类的所有方法都继承在inputHandler中。
现在,正如我所说,inputHandler 类本身有自己的 main 方法。因此,如果我想调用属于某个上层类的方法,我可以使用类似的方法:
...
public static void main()
{
helloTown.main();
helloWorld.main();
helloCountry.main();
}
...
现在这是我的问题:如何使用 inputHandler 按优先级顺序调用各个主要方法。例如,如果 helloWorld 的优先级为 2,helloTown 的优先级为 1,helloCountry 为 3,则应首先调用 helloTown.main(),然后调用 helloWorld.main(),最后调用 helloCountry.main()。
我知道这听起来有点令人困惑,但我确信可以做到。我对此的看法是,首先提取变量的优先级值并按升序排列,并根据需要进行方法调用。任何帮助表示赞赏!请随时向我询问更多详细信息!提前谢谢你。
【问题讨论】:
-
什么?你想先打电话给 helloTown 然后你已经做了。 Java按顺序运行代码......并且除非您将其线程化,否则它会阻塞。而这一个程序是为什么你有这么多主要方法......如果你想动态加载类使用类加载器
-
当你编写的代码以特定的顺序调用方法时,这就是它们被调用的顺序。这就是你所做的。你能澄清一下你想做什么不同的事情吗?
-
旁注:你的设计看起来很奇怪。您有实例变量,例如
name但 static 设置器?不会那样工作的。您正在调用main()而不是构造函数?为什么? -
其实这个程序真的很大,我只是发布了一个较小的版本。我知道Java按顺序执行程序,但这就是我想要改变的。如果 a 扩展 b,b 扩展 c,我想更改调用各自主要方法的方式。我不想逐行隐式键入它们,而是希望它自动优先排序并执行。与@Thomas 的回答非常相似。
标签: java function inheritance methods main