草庐IT

弱引用

全部标签

java - 为什么引用静态变量时要包含类名?

在做一些Java作业时,我通过编写实例方法回答了一个问题,在该方法中我使用了一些属于该方法所在类的staticfinal变量。我写了static变量名不以类名作为前缀,例如:for(inti=0;i代替for(inti=0;i这编译并正常工作。直到后来我才注意到我忘了给类(class)的名字加上前缀。我是否包含类名有关系吗?staticfinal变量在其类的上下文中是否像全局变量一样? 最佳答案 DoesitmatterwhetherIincludetheclassnameornot?也许是给你的老师,以及future在你最终工作的

java - 解释这个关于对象引用转换的输出?

这个问题在这里已经有了答案:Castingaclasstoanunrelatedinterface(1个回答)关闭8年前。interfaceI{}classA{}classB{}publicclassTest{publicstaticvoidmain(Stringargs[]){Aa=null;Bb=(B)a;//error:inconvertibletypesIi=null;Bb1=(B)i;}}我知道为什么a不能转换为B,因为B不是继承自A.我的问题是,为什么Bb1=(B)i;是允许的,因为B不是I的实现?为什么Bb1=(B)i;由于i为null,此行不会强制运行时异常?

java - 打印对对象的引用

这个问题在这里已经有了答案:HowdoIprintmyJavaobjectwithoutgetting"SomeType@2f92e0f4"?(13个答案)关闭7年前。我是java新手。比如说,我有一个类Individual。我要打印Individualind=newIndividual();System.out.println(ind);上面的代码给出了这样的输出:Individual@1922221这有什么意义?它是某种独特的ID对于那个对象?我可以自定义吗?我的意思是写一个函数我自己的打印时会给出输出?如果可以,我该怎么做这个?

java - 父类(super class)对子类对象的引用显示与子类对子类对象的引用相同的行为

Java中的以下代码,当在elipse上运行时,即使我们替换也会给出相同的输出superclasss=newsub();与,subs=newsub();请注意,我们已经覆盖了方法。输出是:changedsupermethodinsubclassnumissubclass5代码:publicclasssuperclass{intnum=2;publicstaticvoidmain(Stringstr[]){superclasss=newsub();//HERE:nothingchangesifwewrite,subs=newsub();s.supermethod();s.method()

面试官问:ThreadLocal中的键为什么是弱引用?

ThreadLocal是一个线程安全的,以线程为单位的数据传递工具。广泛应用于多层级数据传递。一、应用场景ThreadLocal主要功能是跨层传递参数,比如,Controller层的数据需要在业务逻辑层使用时,除了利用方法的参数传递之外还可以使用ThreadLocal传递。有时候我们需要从上层传递一个参数到下层的方法,但是下层的方法新增一个参数的话,会违背开闭原则,如果依赖此方法的上层比较多,那修改此方法必然会牵扯很多其他的代码也要改动(代码中难免会遇到这种不合理的代码)因此我们可以通过ThreadLocal来传递这个参数另外,ThreadLocal在源码中经常被应用,例如,SpringMVC

java - 可以修改最终对象,但不能更改引用变量

标记为final的引用变量不能重新分配给不同的对象。对象中的数据可以修改,但不能更改引用变量。根据我的理解,我在下面创建了一个代码,我在其中尝试重新分配155的新UserId。按照定义,我只是想更改对象内的数据。但是引用是一样的。publicclassFinalClass{publicstaticvoidmain(String[]args){ChildClassobjChildClass=newChildClass();objChildClass.UserId=155;}}classChildClass{publicstaticfinalintUserId=145;}我相信我误解了上述

java - BiFunction 引用可以传递给需要功能接口(interface)的方法吗?

我一直只使用Java6,现在正catch学习Java8中的新功能。我在这里阅读了这篇文章:http://www.drdobbs.com/jvm/lambda-expressions-in-java-8/240166764?pgno=2它说:TheJavaAPIdefinesseveralgenericfunctionalinterfacesinthejava.util.functionpackage.Oneoftheinterfaces,BiFunction,describesfunctionswithparametertypesTandUandreturntypeR.Youcansa

java - Eclipse - 查找没有附加源的库的 Java 引用

环境我有一个简单的test-foo.jar库,只有两个文件:接口(interface)Foo与单一方法voiddoStuff()类Bar有一个方法voidexecuteFoo(Foofoo),它只调用foo.doStuff()然后我有一个EclipseJava项目,它有一个实现Foo的类FooImpl。该项目将test-foo.jar作为构建路径条目。我没有附加此JAR的源代码。问题现在假设我有点好奇到底是谁调用了doStuff()方法。因此,我单击FooImpl#doStuff签名并按Ctrl+Shift+G(查找引用)。我希望在搜索结果中看到Bar#executeFoo,但结果实际

java - Maven:如何在父 POM 中引用子项目的构建目录?

我有一个多模块Maven项目,其中一些模块必须构建为Docker镜像。我试图像这样将所有配置放在父POM中:父POM:com.spotifydocker-maven-plugin0.3.5java${project.artifactId}["java","-jar","/${project.build.finalName}.jar"]/${project.build.directory}/${project.build.finalName}-executable${project.build.finalName}.jarlib/*.jar子POM:com.spotifydocker-m

java - 对象引用未保存的 transient 实例 - 在刷新 : Spring Data JPA 之前保存 transient 实例

我有以下3个模型:模型1:预订@EntitypublicclassReservation{publicstaticfinallongNOT_FOUND=-1L;@Id@GeneratedValue(strategy=GenerationType.IDENTITY)publicLongid;@OneToMany(mappedBy="reservation",cascade=CascadeType.ALL,orphanRemoval=true)publicListroomReservations=newArrayList();}模型2:房间预订:publicclassRoomReserva