草庐IT

宽度可变

全部标签

java - 使用修饰符创建不可变类的好方法(线程安全)

我有一个案例,当我想避免防御性副本时,对于可能仍然被修改但通常只是读取而不是写入的数据。所以,我想使用不可变对象(immutable对象),使用函数式修改器方法,这很常见(javalombok能够或多或少地自动完成)。我的处理方式如下:publicclassPerson{privateStringname,surname;publicPerson(Stringname,Stringsurname){....}//getters...//andinsteadofsetterspublicPersonwithName(Stringname){Personp=copy();//createa

java - FXML 最小高度和最大宽度属性被忽略了吗?

如何为我的窗口设置最小尺寸?我尝试设置minHeightminWidth值,但我仍然可以使用鼠标在此值下调整窗口大小。这是我的FXML根Pane: 最佳答案 为此,您必须设置Stage的minHeight和minWidth。Java代码中的某处...:例子:...yourStage.setMinHeight(480);yourStage.setMinWidth(640);... 关于java-FXML最小高度和最大宽度属性被忽略了吗?,我们在StackOverflow上找到一个类似的问题

Java 可变参数传递 lambda 和值

我试图在varag中结合lambda和简单值。publicstaticvoidLog(Stringformat,Object...args){finalObject[]fmt=newObject[args.length];for(inti=0;i"aaa",d=()->111;Log("%s%d%s%d","bbb",222,s,d);//OK,OUTPUT:bbb222aaa111Log("%s%d%s%d","bbb",222,()->"aaa",()->111);//COMPILEFAIL错误:方法Log不能应用于给定类型;所需字符串,对象[]找到:字符串,字符串,整数,()->

java - 不可变类型需要复制构造函数吗?

假设我有一个不可变的DecimalNumber类:publicfinalclassDecimalNumber{publicfinalStringstr;publicDecimalNumber(Stringstr){this.str=str;}publicDecimalNumber(DecimalNumbercopy){this(copy.str);}publicbooleanisZero(){...}publicDecimalNumberadd(DecimalNumberother){...}...}我决定像这样实现add:publicDecimalNumberadd(DecimalN

java - 如何用可变数量的十进制数字格式化 double

我正在执行一项任务,我在处理下面提到的负面情况时感到震惊如果值小于1,那么我想为其格式化(添加)4个小数点。例如,如果值为0.4567,那么我需要0.4567否则,如果该值大于1格式且只有2位数字。例如,如果值为444.9,那么我需要444.90上面提到的一切都工作正常,但遇到以下情况也就是说,如果值小于1并且以零结尾(0.1000,0.6000),打印0.2000是没有意义的,所以在这种情况下我希望输出仅为0.20下面是我的程序packagecom;importjava.text.DecimalFormat;publicclassTest{publicstaticvoidmain(S

java - 一种将可变数据结构声明为输出并实际返回不可变数据结构的方法

最近,我对这个问题进行了热烈的讨论。假设我在Java中创建了这个方法:publicSetgetRich(){returnImmutableSet....;}每当我在拉取请求中看到这一点时,我都会大喊并试图解释为什么它是错误的。通过这样做,我通过promise他们将获得Set误导了我的方法的消费者。这意味着他们可以删除或添加元素。javac会愉快地编译它,但会抛出RuntimeException。此外,它违反了“里氏替换原则”。就个人而言,我总是这样做:publicImmutableSetgetRich(){returnImmutableSet....;}这样一来,没人会搬起石头砸自己的

java - 为什么一个采用可变参数的方法只有在它是静态的情况下才能被优化为一系列单态调用?

在vJUG24,其中一个主题是JVMperformance.可以找到幻灯片here.他有一个例子:staticvoidlog(Object...args){for(Objectarg:args){System.out.println(arg);}}这是通过调用的(不能完全正确地阅读幻灯片,但它是相似的):voiddoSomething(){log("foo",4,newObject());}他说因为是静态方法,可以这样内联优化:voiddoSomething(){System.out.println("foo");System.out.println(newInteger(4).toS

java - 如何在 Java 中构建复杂的、分层的不可变数据结构?

我正在为客户构建一个Java库,他们想要的其中一件事是他们使用的一组特定标准的数据表示。我不想透露客户的兴趣,但如果他是炼金术士,他可能想要以下内容:ElementsFireName="Fire"PhysicalTemperature=451Color="Orange"MagicalDomain="Strength"WaterName="Water"PhysicalColor="Blue"EarthName="Earth"MagicalDomain="Stability"Ordinality=1我需要能够通过名称访问各种数据元素,例如:Elements.Earth.NameElemen

java - 如何对不可变类实例之间的循环建模?

不可变类很棒,但有一个大问题我想不出一种合理的方法来解决-循环。classFriend{Setfriends();}一个人如何模拟我有你作为friend,而我又有我作为friend?不变性这个来自外界的类肯定是​​不可变的。为了进行相等性检查,内部保存的值应该保持不变。 最佳答案 [[[编辑:添加代码以演示完全不可变的概念]]]这就是构建器非常适合不可变对象(immutable对象)的原因-它们允许在构建过程中使用可变性,以便在您“卡住”它之前设置好所有内容。在这种情况下,我猜你需要一个支持创建循环的friend生成器。finalF

java - 在 Java 6 和 7 中处理安全可变参数,需要说明

JDK在处理安全变量参数方面的主要区别是什么?以上在JDK1.6中发出警告-Typesafety:AgenericarrayofListiscreatedforavarargsparameter为什么会在此处看到此警告?JDK1.7做了什么来抑制它?请帮助我理解。 最佳答案 JDK7添加了@SafeVarargsannotation注意通用可变参数何时真正安全,并将该注释应用于例如Collections.addAll。 关于java-在Java6和7中处理安全可变参数,需要说明,我们在S