Java 如果您将扫描仪作为参数传递,它的状态也会被传递吗?

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

我有一台扫描仪从文本文件中读取数据。当它到达文件中的某一行时,我希望能够调用一个方法,该方法在当前状态下使用Scanner作为参数-如中所示,我希望Scanner(连同使用的文件)在其所在的行上被传递

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对象,以便接收方看到相同的实例和状态。

当然状态。

我只读标题:你不是真的在传递
扫描仪
,你是在传递对该
扫描仪
的引用。这意味着,只有一个
扫描仪
,传递对它的引用不会改变它的状态。我只读标题:你不是真的在传递
扫描仪
,你是在传递引用这意味着,只有一个
扫描仪
,传递对它的引用不会改变它的状态。