Java 这两种创建树贴图(或任何贴图)的方法有什么区别?
我正在阅读一个项目中的一些代码,遇到了以下代码行:Java 这两种创建树贴图(或任何贴图)的方法有什么区别?,java,mapping,Java,Mapping,我正在阅读一个项目中的一些代码,遇到了以下代码行: private Map<String, Map<String, List<String>>> wordbatch; 私有映射wordbatch; 在代码中,我进一步了解了构造函数中的另一行代码: wordbatch = new TreeMap<String, Map<String, List<String>>>; wordbatch=newtreemap; 这一行代
private Map<String, Map<String, List<String>>> wordbatch;
私有映射wordbatch;
在代码中,我进一步了解了构造函数中的另一行代码:
wordbatch = new TreeMap<String, Map<String, List<String>>>;
wordbatch=newtreemap;
这一行代码会有同样的效果吗
Map<String, Map<String, List<String>>> wordbatch = new TreeMap<String, Map<String, List<String>>>();
Map wordbatch=newtreemap();
这一行代码与上面两行代码有什么区别
非常感谢您的帮助,非常感谢。试图增进我对地图的了解。你所说的话之间有一些细微的差别 在第一种情况下,在第X行声明一个实例变量(其值为
null
),在第Y行的代码中的某个地方,给它另一个值,一个新映射
在第二种情况下,您同时声明并给它一个值。然而,这在哪里发生是很重要的
- 如果将完整声明放在原始声明所在的位置,在X行,那么它仍然是一个实例变量。然而,
- 您忘记了您的
。如果您不希望同一个包中的其他类直接使用该变量,这可能很重要private
- 如果代码的任何部分依赖于此变量在开始时可能为null的事实(查找检查此变量是否为null的代码),那么您可能通过在声明中初始化它来引入错误
- 如果将该声明放在原始赋值所在的第Y行,则不再声明实例变量。这将成为一个局部变量。代码的其余部分(期望此实例变量存在)将产生编译错误。实例变量必须在任何方法或构造函数之外声明
请注意,如果Y行在构造函数中,并且它是唯一的构造函数,那么这两种初始化方式几乎没有区别。在您介绍的语句之间有一些细微的区别 在第一种情况下,在第X行声明一个实例变量(其值为
null
),在第Y行的代码中的某个地方,给它另一个值,一个新映射
在第二种情况下,您同时声明并给它一个值。然而,这在哪里发生是很重要的
- 如果将完整声明放在原始声明所在的位置,在X行,那么它仍然是一个实例变量。然而,
- 您忘记了您的
。如果您不希望同一个包中的其他类直接使用该变量,这可能很重要private
- 如果代码的任何部分依赖于此变量在开始时可能为null的事实(查找检查此变量是否为null的代码),那么您可能通过在声明中初始化它来引入错误
- 如果将该声明放在原始赋值所在的第Y行,则不再声明实例变量。这将成为一个局部变量。代码的其余部分(期望此实例变量存在)将产生编译错误。实例变量必须在任何方法或构造函数之外声明
请注意,如果Y行在构造函数中,并且它是唯一的构造函数,那么这两种初始化方式几乎没有区别。这是相同的。就像
inti;i=1代码>。您可能错过了响应的第一个构造函数存储库上的()
。然而,每当我试图用一行代码操作前两行代码时,我都会收到错误。当我添加一行代码时,由于某种原因,我会在程序的其余部分之后出现错误。我认为两者是一样的。如果它在声明站点初始化,你可以在构造函数中使用它,如果不是,那么你必须在使用它之前先初始化它。但实际上,它们的行为是一样的。通常,如果任何实例字段的构造不依赖于构造函数参数,则应直接对其进行初始化。如果共享错误消息,可能会有所帮助。在第一种方法中,我唯一能看到的是构造函数调用中缺少的()
;谢谢大家的支持,也一样。就像inti;i=1代码>。您可能错过了响应的第一个构造函数存储库上的()
。然而,每当我试图用一行代码操作前两行代码时,我都会收到错误。当我添加一行代码时,由于某种原因,我会在程序的其余部分之后出现错误。我认为两者是一样的。如果它在声明站点初始化,你可以在构造函数中使用它,如果不是,那么你必须在使用它之前先初始化它。但实际上,它们的行为是一样的。通常,如果任何实例字段的构造不依赖于构造函数参数,则应直接对其进行初始化。如果共享错误消息,可能会有所帮助。在第一种方法中,我唯一能看到的是构造函数调用中缺少的()
;谢谢大家的支持,谢谢大家的解释。修复了程序中的错误并区分了两个细微的差异。谢谢我只想感谢你的解释。修复了程序中的错误并区分了两个细微的差异。谢谢