草庐IT

不变性

全部标签

java - 是否可以保证 java.util.Collections.shuffle() 背后的算法在未来的 Java 版本中保持不变?

在未来的java版本中,以下程序是否保证生成具有相同内容和顺序的列表?importjava.util.ArrayList;importjava.util.Arrays;importjava.util.Collections;importjava.util.List;importjava.util.Random;publicclassTest{publicstaticvoidmain(String[]args){Listlist=newArrayList(Arrays.asList("A","B","C","D"));Collections.shuffle(list,newRandom(

java - 类变量以外的对象的易变性

我曾经相信任何在两个线程之间共享的变量都可以在线程本地缓存,并且应该声明为volatile。但这种信念最近受到了一位队友的挑战。我们正在尝试确定在以下情况下是否需要volatile。classClass1{voidMethod1(){Workerworker=newWorker();worker.start();...System.out.println(worker.value);//wanttopollvalueatthisinstant...}classWorkerextendsThread{intvalue=0;//Shouldthisbedeclaredasavolatile

java - string.replaceAll() 性能是否受到字符串不变性的影响?

假设我在替换了1,000个匹配实例的大字符串上调用了replaceAll()。这是否意味着由于字符串不可变性而在过程中创建并重新分配了1,000个字符串?有没有更快的替代方案? 最佳答案 如果你深入研究String,您会看到它将replaceAll()委托(delegate)给Pattern&Matcher和Matcher.replaceAll()使用StringBuilder来存储最终返回的值。所以不,String.replaceAll()不会创建超过少量的对象。 关于java-str

c# - 您期望不可变列表的不可变性有多深?

如果你有一个不可变列表,你希望它总是在你请求时返回对同一对象的引用,比如说list.get(0)我的问题是,您是否希望能够改变该对象并在下次从列表中获取它时反射(reflect)该改变? 最佳答案 这取决于上下文。在通用库中,我们应该假设list是不可变的。对列表中元素的更改将反射(reflect)给所有调用者,这是每次返回相同引用的直接结果。但是,如果这是一个专门的不可变树(或其他),并且被如此记录,那么您会期望列表中的项目本身是不可变的,这将成为一个有实际意义的问题。 关于c#-您期

java - 不变性和可读性

所以我一直在阅读JoshuaBloch的EffectiveJava并注意到我在工作中实际遇到的两点。要点1:使用setter方法使代码更具可读性。在他的例子中,我们有一个类有一个非常大的构造函数。当人们实例化类时,很难说出所有参数的情况。因此,他建议制作一个简约的构造函数并为所有其他选项设置设置方法,而不是...MyClassclazz=newMyClass(a,b,c,d,e,f,g);你会写....MyClassclazz=newMyClass(a,b,c);clazz.setDitto(d);clazz.setEcho(e);clazz.setFunzies(f);clazz.s

java - 共享四边形基的方形/矩形(具有约束不变量)之间的继承问题

我有一个接口(interface)Polygon,然后我有一个类Quadrilateral。然后,我有两个类,Square和Rectangle,它们扩展了Quadrilateral。四边形由实例变量sideA、sideB、sideC和sideD组成。它包含方法area()和perimeter()来计算任何四边形的面积和周长。考虑到这一点,Square类有一个实例变量lengthOfSides,而Rectangle类有两个实例变量,length和width。由于Quadrilateral中的方法area和perimeter可以用于计算任何四边形的面积和周长,包括正方形和矩形,我认为最好只

c# - 不变断言适合 C# 编程吗?

在书中codersatwork,作者问“你如何在代码中使用不变量”。请解释这个问题的含义。我看到类不变量onwiki,但是这个例子是用Java写的,我的Java不够熟练,无法将这个例子与C#联系起来。.NET4.0引入了不变性、协变性和逆变性,并得到了很好的解释here.不变性是如此广泛。作者对这个词的使用似乎与单元测试有关。对于那些读过这本书的人来说,作者的意思是什么?我们是在谈论做出假设并在单元测试后简单地测试有效性吗? 最佳答案 “不变”这个词不仅仅意味着某些东西在特定条件下不会改变。有许多不同种类的不变量。例如,在物理学中,

java - Java 中的不变性

我试图将所有东西放在一起定义“不变性”。项目(3)here是说,作为创建不可变对象(immutable对象)的规则之一,Dontallowsubclassestooverridemethods.Thesimplestwaytodothisistodeclaretheclassasfinal....覆盖的方法在子类的实例上运行。而且,据我所知,一个不可变的类是其中一个对象,一旦它们被实例化就被“雕刻”在内存中——没有它的成员,因此不能更改对象。将这些放在一起——“不可变”的定义是否适用于类和对象?通过完成方法,我可以防止在类被扩展时重写它的方法。我看不出完成不可变类的方法如何进一步增加其

java - session 过期时的授权重定向不适用于提交 JSF 表单,页面保持不变

我正在使用JSF2。我已经像这样实现了一个自定义面孔servlet:publicclassMyFacesServletWrapperextendsMyFacesServlet{//...}其中我正在做一些授权检查并在用户未登录时发送重定向:publicvoidservice(ServletRequestrequest,ServletResponseresponse){HttpServletRequestreq=(HttpServletRequest)request;HttpServletResponseres=(HttpServletResponse)response;if(...){

【Java】Java中String不可变性的底层实现

人不走空                                          🌈个人主页:人不走空      💖系列专栏:算法专题⏰诗词歌赋:斯是陋室,惟吾德馨目录      🌈个人主页:人不走空      💖系列专栏:算法专题⏰诗词歌赋:斯是陋室,惟吾德馨1.不可变性的概念2.String的底层实现3.操作String对象4.不可变性的优点5.总结作者其他作品:在Java编程中,String类的不可变性是一个被广泛讨论和利用的特性。这种不可变性使得String对象在创建后无法被修改,从而保证了程序的安全性和线程安全性。本文将深入探讨Java中String不可变性的底层实现原理,