当前位置: 首页 > 面试题库 >

什么时候才是合适的时间使用'new'关键字?

融伯寅
2023-03-14
问题内容

什么时候需要new在Java中使用关键字。我知道您在创建这样的对象实例时应该使用它:

TextView textView = new TextView(this);

有时在代码中,我注意到new没有使用它,我感到困惑。在这一行代码中:

    AssetManager assetManager = getAssets();

为什么不这样创建AssetManager的实例:

AssetManager assetManager = new AssetManager();

然后将其设置为等于getAssests()?

什么时候应该new使用?

谢谢!


问题答案:

首次明确创建对象时,请使用new关键字。然后,不需要使用新的getter方法获取对象,因为该对象已存在于内存中,因此不需要重新创建。

如果您想要更详细的新说明,请访问oracle
docs

如果对象为null(对于未初始化来说很合适),则将需要’new’关键字。

编辑:

在当前情况下,这将始终打印“需要新”。

Object mObj = null;
if (mObj == null)
    System.out.println("needs new");
else
    System.out.println("does NOT need new");

OUTPUTS: needs new

因此,要解决此问题,您可以执行以下操作:

Object mObj = new Object();
if (mObj == null)
    System.out.println("needs new");
else
    System.out.println("does NOT need new");
OUTPUTS: does NOT need new

在这种情况下,我们将始终看到“不需要新”



 类似资料:
  • 问题内容: 什么时候适合使用AJAX? 使用AJAX的利弊是什么? 回应查德·伯奇(ChadBirch)的回答:是的,我指的是开发“标准”站点时,该站点将利用AJAX的优势,而不会因其应用程序而受挫。以会破坏搜索排名的方式使用AJAX是不可接受的。因此,如果“保持网站完好无损”需要做更多的工作,那将是一个“骗局”。 问题答案: 这是一个相当大的主题,但是您应该使用AJAX来增强用户体验,而不必完全

  • 问题内容: 在支持异常对象的语言(Java,C#)中,什么时候使用错误代码是合适的?在典型的企业应用程序中使用错误代码是否适当? 许多众所周知的软件系统采用错误代码(和相应的错误代码参考)。一些示例包括操作系统(Windows),数据库(Oracle,DB2)和中间件产品(WebLogic,WebSphere)。错误代码有什么好处?使用错误代码有什么缺点? 问题答案: WITHIN 程序,应该采用

  • 问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制

  • 问题内容: 什么时候应该使用Apache Commons的Validate.isTrue,什么时候应该只使用’assert’关键字? 问题答案: 可以断言(实际上通常是断言),因此,例如,它们对于验证用户输入没有用。

  • 问题内容: 什么时候不宜在方法签名上使用Java中的static关键字?如果方法基于某些参数执行功能,并且不需要访问非静态字段,那么您是否不总是希望这些类型的方法都是静态的? 问题答案: 您 可能 不希望它为静态的一个原因是允许它在子类中被覆盖。换句话说,行为可能不取决于对象内的数据,而是取决于对象的确切类型。例如,您可能具有常规的集合类型,其属性将在始终可变的集合,始终不可变的集合中返回,并依赖

  • 问题内容: 我试图找出“最佳做法”,以确定是否要添加自动递增的整数作为表的主键。 假设我有一个表格,其中包含有关化学元素的数据。每个元素的原子序数是唯一的,并且永远不会改变。因此,与其对每列使用一个自动递增的整数,不如仅使用原子序数会更有意义,对吗? 如果我有一本书,那会是真的吗?我应该使用ISBN还是自动递增的整数作为主键?还是包含每个人的SSN的员工表? 问题答案: 关于Stack Overf