我有一个使用多个类的程序,我希望其他类能够访问我在主类中声明的相同扫描程序,我假设它将使用某种get方法完成,但我是无法找到任何资源来帮助我。
以下是我在主要课程中制作的扫描仪:
Scanner in = new Scanner(System.in);
System.out.println("Enter a filename");
String filename = in.nextLine();
File InputFile = new File (filename);
Scanner reader = new Scanner(filename);
读者扫描仪是我希望能够访问组成该程序的其他类的人,任何人都可以给我一些指导我如何做到这一点?非常感谢您的帮助!
答案 0 :(得分:3)
只需在public static final Scanner in = new Scanner(System.in);
课程中使用main
即可。
之后,您可以通过MainClassName.in
从任意位置拨打电话。
另外,请注意传递给Scanner的参数。我想你想把InputFile
放进Scanner
,而不是filename
=)
File InputFile = new File (filename);
Scanner reader = new Scanner(filename);
答案 1 :(得分:0)
所谓的design patterns可以帮助您处理日常问题。他们展示了最佳实践。
您正在寻找像Singleton之类的东西,这是您的软件回声系统所独有的类的实例。
对于您的示例,您可以执行以下操作:
public class MyScanner{
private static MyScanner instance = new MyScanner();
private MyScanner(){
// init the scanner
}
//Get the only object available
public static MyScanner getInstance(){
return instance;
}
public void read(File f){
// read your file
}
}
答案 2 :(得分:0)
回答关于依赖注入的问题:这里是dependency injection(通过构造函数)的粗略概念:
public void wire() {
...
Scanner reader = new Scanner(filename);
ClassA objectA = new ClassA(reader);
ClassB objectB = new ClassB(reader);
...
}
A类(B类有类似的构造函数):
public class ClassA {
private Scanner reader;
public ClassA(Scanner reader) {
this.reader = reader;
}
...
}
因此,我们的想法是在wire()方法中创建和连接对象。