繁体   English   中英

Java扫描程序最佳实践

[英]Java Scanner Best Practice

问题:我有一个方法,使用BufferedReader实例化一个新的Scanner类,并返回Scanner类本身。 据我所知,Java将返回Scanner类 - 作为对象的“副本”(pass-by-value),而不是我们在C ++中称为Reference或Pointer。 如果逻辑是正确的 - 这是否意味着,在我调用的方法中实例化的Scanner将继续保持OPEN,从而永远不会被垃圾收集?

例如:(裸骨)

private Scanner getDataFromWebService(String url)
{
    URLConnection sc = null;
    URL test = null;
    Scanner scanner = null;

    test = new URL(url);
    sc = test.openConnection();
    in = new BufferedReader(new InputStreamReader(sc.getInputStream());

    scanner = new Scanner(in);

    return scanner;
}

// Sample Call

Scanner newScanner = getDataFromWebService(url);

其次,如果你愿意那么善意; 那么对于URLConnection和BufferedReader会发生什么,因为如果我在getDataFromWebService方法中返回扫描器之前关闭它们 - 它将“取消”返回的扫描器。 也许这个问题的答案在于第一个问题。

这里最好的做法是什么,只是永远不会回归复杂的物体......

您将获得该参考的副本。 所以你仍然会使用相同的对象实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM