实际上,我对这两个主题感到困惑,任何人都可以向我解释。

ArrayList<Long> queryParms = new ArrayList<Long>();
  • 上面的一种叫做泛型或自动装箱吗,什么是拆箱?
  • 这是最佳做法吗?
  • 有人说自动装箱是邪恶的事情。
  • 如果我使用泛型,是否可以避免自动装箱和拆箱?
  • 最佳答案

  • 上面是泛型的示例。自动装箱将是由编译器对包装类型中的原始类型进行自动转换,反之亦然。例如,以long变量中的Long变量为例:
    long param = 13L;
    queryParms.add(param);
    
  • 使用泛型?是。它允许您指定列表将包含的内容。您应该使用它们。使用自动装箱?是的,它简化了代码,您不必担心原始变量类型到包装器之间的转换(反之亦然)。
  • 自动装箱并不邪恶(IMHO)。在某些极端情况下,自动装箱可能非常烦人,但是如果您知道自动装箱的工作原理,则不必担心。如果您需要更多了解,请查看the Sun (now Oracle) paper on auto-boxing
  • 如果要创建一个包含包装的列表(在您的情况下为Long),则必须处理类型转换。您可以使用显式类型转换,也可以使用自动装箱。
  • 07-24 18:56
    查看更多