草庐IT

宽度可变

全部标签

java - 方法重载中的原始可变参数

原始人又来了,打破规则,我以前学过。好吧,技术上不是原始的,而是由它们组成的。我了解到,每当没有比rest更具体的方法时,编译时错误就会发生,就像这里发生的那样。publicstaticvoidcaller(){z5();//Error.NeitherInteger,norStringismorespecificz5(null);//Errorforthesamereason}publicstaticvoidz5(Integer...integers){System.out.println("Integerz5called");}publicstaticvoidz5(String...

java - LinkedBlockingQueue 节点的 next 不可变

我正在阅读LinkedBlockingQueue代码,但我有一个问题,也许很简单,但我找不到答案,真的需要帮助。我注意到Node.next不是易变的,像这样:staticclassNode{Eitem;LinkedBlockingQueue.Nodenext;Node(Evar1){this.item=var1;}}那么,新节点(Node.next)的入队如何通过另一个线程对出队可见?privatevoidenqueue(Nodenode){//assertputLock.isHeldByCurrentThread();//assertlast.next==null;last=last

java - 在 J2ME 中测量 AttributedString 的宽度

我正在针对JavaPersonalBasisProfile编写代码在J2ME中。我需要测量AttributedString的宽度以像素为单位。在JavaSE中,我会得到一个AttributedCharacterIterator从我的AttributedString并将其传递给FontMetrics#getStringBounds,但在J2MEPBP中,FontMetrics没有getStringBounds方法,也没有任何其他接受CharacterIterator的方法。我该怎么办? 最佳答案 我为此非常努力。我需要将面板的大小调整

java - 包装到另一个类中的不可变整数(按值调用)

我想知道在Java中按值调用并尝试了一些代码。publicclassTest{publicstaticvoidmain(String[]args){Testtest=newTest();Integerinteger=4;System.out.println(integer);test.change(integer);System.out.println(integer);}publicvoidchange(Integerinteger){integer++;}}因为java是按值调用的,所以我在徘徊输出:45但是打印出来了44然后我了解到整数是不可变的,所以我的方法“更改”创建了值为5

java - 可变对象的安全发布

我阅读了几个相关问题,但没有一个解释安全发布持有人的方式。我仍然对Java并发实践中的示例感到困惑,第3.5节:有类Holder:publicHolder{privateintn;publicHolder(intn){this.n=n};publicvoidassertSanity(){if(n!=n)thrownewAssertionError("Thisstatementisfalse.");}}及其不安全的出版物://unsafepublicationpublicHolderholder;publicvoidinitialize(){holder=newHolder(42);}可

java - 静态初始化的 unmodifiableCollection.get 是否保证不可变?

静态初始化的unmodifiableCollection.get是否保证不可变?对于:静态最终mapFOO=Collections.unmodifiableMap(newHashMap());多线程使用get方法能不出问题吗?即使无法添加/删除FOO中的项目,是什么阻止了get方法出于缓存目的操纵FOO的内部状态等。如果以任何方式修改内部状态,则FOO不能同时使用。如果是这样,java中真正的不可变集合在哪里? 最佳答案 给出具体的例子:staticfinalMapFOO=Collections.unmodifiableMap(ne

java - Logback MDC put() 可变对象

我正在使用Vaadin框架,它对拦截事件的支持很差,我无法知道session或UI何时被激活,所以我无法将它们的ID放入MDC。通常我会:publicvoidonSessionBegin(){MDC.put("session",VaadinSession.getCurrent().toString());//但是我没有这样的事件,所以我想://intheservletinitorwhereverMDC.put("session",newObject(){publicStringtoString(){VaadinSession.getCurrent().toString()};});//

java - 添加不同宽度、高度的视频文件

我正在构建一个用户可以录制截屏视频的应用程序。应用程序的组成部分是,可以暂停录制并在以后随时恢复录制(session在服务器端维护)。也就是说当用户开始录制屏幕时,宽度和高度是:1024*768。使用xuggler(ffmpeg的java包装器),我能够生成视频。但后来说他在不同的系统上并希望恢复屏幕转换,然后分辨率更改为1080*720。在这个阶段,我分开录制然后尝试合并两个文件。但是因为宽度和高度不一样,我得到以下异常:16:38:03.916[main]WARNcom.xuggle.xuggler-Goterror:pictureisnotofthesamewidthasthis

java - 等价于 Java 中的 C++ 可变参数模板

我想用Java编写一个泛型类型安全的观察器。在C++中,我可以使用C++11中的可变参数模板轻松完成此操作,如下所示:classObserver{voidupdate(T...args);};现在,在java中,我能做的最好的事情是:classObserver{voidupdate(Targs);};现在,update不能像C++那样接受多个不同类型的参数。有人可以建议解决这个问题吗?提前致谢。 最佳答案 如果所有参数都扩展/实现T你可以说:classObserver{voidupdate(Listargs){}}

java - 不可变链表的拆分器

这是不可变链表的经典实现:publicabstractclassListimplementsIterable{privatestaticfinalListNIL=newNil();publicabstractAhead();publicabstractListtail();publicListcons(Aa){returnnewCons(a,this);}publicstaticListnil(){returnNIL;}@OverridepublicIteratoriterator(){returnnewIterator(){privateListlist=List.this;@Ove