Java 扫描器最佳实践

标签 java logic

问题: 我有一个方法可以用 BufferedReader 实例化一个新的扫描器类,并返回扫描器类本身。据我了解,Java 将返回 Scanner 类——作为对象的“副本”(按值传递),这与我们在 C++ 中称为引用或指针的情况相反。如果逻辑是正确的 - 那么这是否意味着在我调用的方法中实例化的 Scanner 将继续保持打开状态,因此永远不会被垃圾收集?

例如:(裸骨)

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 方法中的扫描器之前关闭它们 - 它将使返回的扫描器“无效”。或许答案就在第一个问题中。

这里的最佳实践是什么,永远不要返回复杂的对象......

最佳答案

您会得到一份引用资料的副本。所以您仍然会使用相同的对象实例。

关于Java 扫描器最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12928616/

相关文章:

java - 安卓 : determine zoom level from circle

java - java中使用泛型的工厂方法模式,如何?

c++ - 在 OpenGL 中以固定速度沿贝塞尔曲线移动对象

javascript - 数学:当关卡数量不受限制时,为关卡 Assets 创建查找表

java - EclipseLink 无法识别 MySQL 中的 int(11)

JAVA : How many Objects will be created ? 为什么?

c - 公式计算逻辑

php - 定时从db中获取数据,数据到达时停止

logic - 如何在 Agda 中证明 `theorem : ¬ ⊤ ≡ ⊥`?

java - 如何从java将变量传递给lua脚本? ( io.生菜.core )