我们已经拆分了我们的应用程序,以便包A处理来自一个外部源的数据,包B处理来自另一个的数据。在这两种情况下,我们都需要创建一个域对象并有一个“Transformer”来执行此操作。所以我有com.foo.bar.a.ThingTransformer和com.foo.bar.b.ThingTransformer我怀疑这是不好的做法,但想看看SO的好人是怎么想的。 最佳答案 我不会说这总是一种不好的做法,但它有点像codesmell.如果两个类做不同的事情,那么为什么它们没有不同的名字?如果两个类做同样的事情,那么为什么有两个类?从实际的
字符串是不可变的,这意味着它们一旦创建就无法更改。那么,这是否意味着如果使用+=追加内容比创建StringBuffer并向其追加文本会占用更多内存?如果你使用+=,你会在每次必须保存在内存中的时候创建一个新的“对象”,不是吗? 最佳答案 是的,每次使用+=都会创建一个新对象。然而,这并不意味着这样做总是错误的。这取决于您是希望该值作为字符串,还是只是使用它来进一步构建字符串。如果您确实想要x+y的结果作为字符串,那么您最好使用字符串连接。但是,如果您真的要(比如说)循环并附加另一个字符串,以及另一个字符串等等-只需要在最后作为字符串
我目前正在学习Java泛型,下面是Java中不可具体化的类型列表。如果类型是以下之一,则该类型不可具体化:•类型变量(例如T)•具有实际参数的参数化类型(例如List,ArrayList,orMap)•具有边界的参数化类型(例如ListorComparable)我理解为什么带实际参数的参数化类型和带绑定(bind)的参数化类型是不可引用的,因为在运行时删除之后,唯一剩下的类型信息是List,但为什么类型变量(例如T)是不可具体化的类型?我想在运行时,类型删除后,T会变成Object(给定T是未绑定(bind)的类型参数),因此类型信息可用。我的理解有问题吗?
我想了解为什么Java8Optionals被设计成不可变的。它只是为了线程安全吗? 最佳答案 Optionals用于传递东西。如果您将某样东西送给某人然后更改其内容,他们会非常惊讶,而且不是很好。 关于java-为什么JavaOptionals是不可变的?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/34553034/
根据图表here,Java中与C#的Decimal等效的数据类型是BigDecimal。真的是这样吗?“大”序言怎么了?Java中似乎没有“SmallDecimal”或“LittleDecimal”(更不用说“MediumSizedDecimal”)了。不过,我必须说,这张图表是我在这个主题上找到的最清晰的东西;其他链接here和here和here对我来说,就像Storm过后的密西西比河一样清澈。 最佳答案 Isthisreallyso?它们相似但不完全相同。更具体地说:Java版本可以表示C#版本可以表示的每个值,但反之则不然。W
我知道整数在Java中是不可变的。但是为什么要这样设计呢?在问这个问题之前,我浏览了其他答案:IsIntegerImmutablei++stillworkingforimmutableIntegerinJava?WhyareJavawrapperclassesimmutable?但我找不到要求Integer不可变的用例。是否有像String那样的技术原因?字符串在网络连接、数据库URL等中用作参数。如果它是可变的,则很容易被破坏。支持StringPool设施。支持使用字符串作为参数的类加载机制。字符串可变会导致加载错误的类。我知道有像AtomicInteger这样的可变包装器。更新:从
我在学校用C++编写代码已经3年了。两天前我才开始用Java编码;我的问题是:制作通用数组是不好的做法吗?有什么替代方案?我很困惑,除了做一些奇怪的事情,比如这个例子,我似乎无法制作一个通用数组://ClassimplementingtheMergeSortalgorithmwithgenerictypes//RevisedbyDoinaJanuary2014packageSorting;importjava.lang.*;publicclassMergeSort{//Wrappermethodfortherealalgorithm//Tisthegenerictypewhichwil
我尝试一直关注良好的性能和干净的代码。我很难理解使用包含150个字符的键的HashMap是否明智。HashMapkey的长度是否有不成文的规定?使用150个字符的字符串键是否被认为是不好的做法?它会影响性能吗?多长? 最佳答案 不是真的,150个字符的字符串对于计算hashCode来说相对微不足道。话虽如此,在这种情况下,我建议您进行测试!创建一个例程来填充HashMap,例如,在此处插入一个代表您的使用场景的大小随机值,其中5个字符串作为键。测量需要多长时间。然后对15个字符的键执行相同的操作,并查看其缩放比例。此外,Java中的
Java中的final类都是不可变的吗?String和Integer都是最终类,我相信它们都是不可变的。 最佳答案 不,final意味着类不能被扩展。它没有提到可变性。例如:finalclassMutInt{publicintmodifyMe;} 关于java-所有final类都是不可变的吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1630321/
使用HTML设置Swing元素的样式被认为是不好的做法?举个例子,如果我想让标签变大变红一次,我有两个选择:要么使用API调用:JLabellabel=newJLabel("Thisisatitle");label.setFont(label.getFont().deriveFont(18));label.setForeground(Color.red);或者使用HTML:JLabellabel=newJLabel("Thisisatitle");此外,HTML方式允许我强调一个词而不是整个标签,以及其他类似用途。使用HTML有什么缺点?它更贵吗?是否不能保证所有JRE上的格式?