在编写独立的java应用程序时,我在静态上下文中看到了很多初学者代码。 我曾经通过在main中创建类的实例并使用构造函数来解决这个问题。
我已经添加了一些非常简单的独立程序的示例,并且想知道是否有最佳实践#34;离开"静态上下文。
我还想知道是否有一些独立的java程序应该在静态上下文中或者在main方法中做什么,除了作为每个独立java程序的入口点之外,它的功能是什么。
欢迎任何阅读材料!
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ExampleStatic
{
JLabel label;
public static void main(String[] args)
{
//Option 1 - Work from static context:
JFrame frame = new JFrame();
frame.setBounds(10,10,100,100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel staticlabel = new JLabel("static");
frame.add(staticlabel);
frame.setVisible(true);
//Option 2 - Create instance, call initialisation function
ExampleStatic e = new ExampleStatic();
e.initialise();
//Option 3 - Create instance, handle initialisation in constructor
new ExampleStatic(true);
}
public ExampleStatic(){}
public ExampleStatic(boolean init)
{
JFrame frame = new JFrame();
frame.setBounds(10,10,100,100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
label = new JLabel("constructor");
frame.add(label);
frame.setVisible(true);
}
public void initialise()
{
JFrame frame = new JFrame();
frame.setBounds(10,10,100,100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
label = new JLabel("init function");
frame.add(label);
frame.setVisible(true);
}
}
答案 0 :(得分:0)
选项2和选项3都很好,因为如果你想在其他类中的其他地方使用你的实例,你可以轻松地使用松散耦合。但是,如果您将在Main方法中编写所有内容,那么您将失去范围及其可重用性。
答案 1 :(得分:0)
JVM需要main
是静态的,之后你可以自由地做你想做的事情。我会调用一个非静态的“第二主”来处理初始化,然后在不同的方法(或类)中进行任何进一步的处理。
我会避免把东西放在构造函数中,除非你真的认为它是适合他们的地方。