Java 如果您将扫描仪作为参数传递,它的状态也会被传递吗?
我有一台扫描仪从文本文件中读取数据。当它到达文件中的某一行时,我希望能够调用一个方法,该方法在当前状态下使用Scanner作为参数-如中所示,我希望Scanner(连同使用的文件)在其所在的行上被传递Java 如果您将扫描仪作为参数传递,它的状态也会被传递吗?,java,java.util.scanner,Java,Java.util.scanner,我有一台扫描仪从文本文件中读取数据。当它到达文件中的某一行时,我希望能够调用一个方法,该方法在当前状态下使用Scanner作为参数-如中所示,我希望Scanner(连同使用的文件)在其所在的行上被传递 public static void createEntry(File list, int mediaTypeNum, String mediaType) throws FileNotFoundException { Scanner mediaReader = new Scanner(li
public static void createEntry(File list, int mediaTypeNum, String mediaType) throws FileNotFoundException {
Scanner mediaReader = new Scanner(list);
int occurrence = mediaTypeNum;
int scannerCounter = 0;
String match;
String title = "";
String director = "";
while (mediaReader.hasNext() && scannerCounter < occurrence) {
match = mediaReader.nextLine();
if (match.equalsIgnoreCase(mediaType)) {
scannerCounter++;
if (scannerCounter == occurrence) {
// based on type, create the media object
// createMediaObject(list, mediaReader, mediaType)
title = mediaReader.nextLine();
director = mediaReader.nextLine();
}
}
}
publicstaticvoidcreateentry(文件列表、int-mediaTypeNum、stringmediatype)抛出FileNotFoundException{
扫描仪mediaReader=新扫描仪(列表);
int-occurrence=mediaTypeNum;
int扫描计数器=0;
字符串匹配;
字符串标题=”;
字符串控制器=”;
while(mediaReader.hasNext()&&scannerCounter
createMediaObject()将有一个开关大小写,根据大小写,扫描仪将读取以下几行,直到出现一个空行。对于每种媒体类型,行数不同
提前谢谢!当然,事实上Java中的任何对象都是如此。在任何时候都不会创建对象的隐式副本* 您需要注意的是,
Scanner
有一个“顺序”状态,如果您经常传递它,很容易忘记它处于什么状态。特别是在执行条件处理时,不同的执行路径可能会将它保留在不同的位置
实现这一点的一个好方法是始终在Javadoc方法中记录扫描器的预期状态以及最后的状态
*这句话有一个很大的警告:多线程。但是在这里详细讨论这一点是非常离题的。当然,事实上,Java中的任何对象都是如此。在任何时候都不会创建对象的隐式副本*
您需要注意的是,Scanner
有一个“顺序”状态,如果您经常传递它,很容易忘记它处于什么状态。特别是在执行条件处理时,不同的执行路径可能会将它保留在不同的位置
实现这一点的一个好方法是始终在Javadoc方法中记录扫描器的预期状态以及最后的状态
*这句话有一个很大的警告:多线程。但是在这里详细讨论这一点是非常离题的。当然。您将引用传递给Scanner对象,以便接收方看到相同的实例和状态。当然。您将引用传递给Scanner对象,以便接收方看到相同的实例和状态。当然状态。我只读标题:你不是真的在传递扫描仪
,你是在传递对该扫描仪
的引用。这意味着,只有一个扫描仪
,传递对它的引用不会改变它的状态。我只读标题:你不是真的在传递扫描仪
,你是在传递引用这意味着,只有一个扫描仪
,传递对它的引用不会改变它的状态。