java - 如何正确使用dispose()?

标签 java libgdx destructor dispose

例如,如果我有一个对象的实例,它实现了 Disposable,那么我们可以说它是

BitmapFont someFont = new BitmapFont();

根据 LibGDX 文档,我应该在不再需要该对象时立即调用 dispose() 方法。但是如果决定将新字体分配给同一个变量怎么办:

someFont = new BitmapFont();

为了防止内存泄漏,我应该在进行此类赋值之前首先调用 dispose() 吗?换句话说,哪个变体是正确的,这个

    BitmapFont someFont = new BitmapFont();
    //do something
    someFont.dispose();
    someFont = new BitmapFont();
    //do something else
    someFont.dispose();

或者这个:

    BitmapFont someFont = new BitmapFont();
    //do something
    someFont = new BitmapFont();
    //do something else
    someFont.dispose();

我目前认为第一个是正确的,似乎 dispose() 的行为就像 C++ 中的析构函数,只是它不会自动调用。

那么,哪个版本实际上是正确的?

最佳答案

您的变量只是指向给定对象的指针,而不是保存它所包含的所有引用的总体容器。如果您要遵循第二个代码示例,则仅对第二个 BitmapFont 实例调用 dispose,而不是对第一个实例调用 dispose。您的第一个模式在技术上是正确的,您还需要考虑 try/finally block ,以确保在完成后调用 dispose。

关于java - 如何正确使用dispose()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33325285/

相关文章:

java - Eclipse IDE - 'Outline' 功能的源代码

java - 在EJB3.1中执行初始化代码

java - MiniCraft中notch是如何做动画的?

C++ RAII析构函数异常

java - 运行 gradle 构建时出错

java - libGDX:我如何告诉核心游戏 getIconImageUri() 并将其用作我的游戏中的图像 Actor

libgdx - scaleTo scaleBy 不适用于 ImageButton - LIBGDX

java - 如何修复Android Studios错误: "unable to load class ' org.gradle.mvn3

c - 像 C 中的析构函数这样的机制?

c++ - 析构函数在 C++ 中是如何工作的