草庐IT

弱引用

全部标签

java - 为什么在 Enum hashCode() 中引用 Object hashCode() 实现,而不是 ordinal() 函数?

这个问题在这里已经有了答案:WhatisthereasonbehindEnum.hashCode()?(7个答案)关闭9年前。我一直认为enumhashCode指的是Java中的ordinal,因为ordinal似乎是hashCode的完美候选者,但事实证明enumhashCode实际上是指默认的hashCode对象实现。我明白,这与JLS并不矛盾,但这仍然让我感到惊讶,我想不出为什么要这样做。虽然我猜想JVM可能会以某种方式依赖它来提供独特的保证,但这对64位JVM来说不再适用。我已经检查了JDK1.6和最新的JDK7,两者的方式相同。有谁知道为什么会这样吗?使用ordinal作为h

java - 从所需的 .class 文件间接引用

我在STS中遇到以下错误:Thetypeorg.springframework.core.env.EnvironmentCapablecannotberesolved.Itisindirectlyreferencedfromrequired.classfiles 最佳答案 这听起来像是一个传递依赖问题。这意味着您的代码依赖于jar或库来执行某些操作——显然,您依赖于Spring框架代码。好吧,所有Spring代码也依赖于库和jar。很可能,您需要将版本控制正确的org.springframework.corejar添加到您的类路径中

java - 为什么在 Java 中允许初始化对 Null 的引用?

在以下使用JDBC的示例中(尽管这个问题并不特定于JDBC):Connectionconn=null;try{.....DothenormalJDBCthinghere....}catch(SQLExceptionse){if(conn!=null){conn.close();}}如果我没有将conn初始化为null那么编译器会提示说在catchblock中我不能使用一个没有的引用被初始化。Java默认将对象引用初始化为null那么为什么我需要显式地将其初始化为null。如果编译器不喜欢以null开头的引用的原始值,为什么它甚至接受我的显式初始化?注意:我使用EclipseLuna作为

java - 通过引用 bean 名称在 @Scheduled 注释中使用 @ConfigurationProperties

我正在使用@ConfigurationProperties在Springboot中配置后台任务的延迟,我正尝试在另一个上使用来自@Scheduled注释的这个值零件。但是,为了使其正常工作,我必须使用Spring为bean提供的全名。配置属性类如下:@ConfigurationProperties("some")classSomeProperties{privateintmillis;//thepropertyissome.millispublicintgetMillis(){returnmillis;}publicvoidsetMillis(intmillis){this.milli

java - 为什么我在这里使用方法引用或 lambda 很重要?

当我尝试编译这段代码时importjava.util.Optional;publicclassGenericTest{publicstaticvoidmain(String[]args){Optional.empty().map(o->getStringClass(o)).orElse(String.class);}staticClassgetStringClass(Objectarg){returnString.class;}}javac将失败并出现以下错误:GenericTest.java:6:error:methodorElseinclassOptionalcannotbeapp

Java 线程终止引用

为什么不能通过将线程的引用设置为null并让垃圾收集器删除它来终止线程?它和其他对象一样,不是吗?示例:Threadt=newThread(newRunnable(){publicvoidrun(){//...}}).start;t=null; 最佳答案 It'sanobjectlikeanyother,isn'tit?不,不是。它代表一个非内存资源。您是否希望一个文件被删除,因为代表它的对象被垃圾回收了?事实上,当谈到垃圾回收时,Thread对象非常不“像任何其他”对象,因为线程本身就是可达性树,因此表示正在运行的线程的Threa

Java 泛型 2 向引用

我试图在java中创建两个相互包含的类之间的泛型关系。这些对象本质上形成了交替层树。到目前为止,我发现的最接近的SO问题是:Javagenericsofgenericsof,这对我的问题很接近并且有些帮助,但仍然不同,我需要更多指导。这是情况,或者更确切地说,我希望它是这样的:abstractclassGroup>>{privateListitems;publicListgetItems(){...}publicvoidsetItems(Listitems){...}}abstractclassItem>>{privateListsubGroups;publicListgetSubGr

java - 为什么 WeakHashMap 在 GC 后对值有强引用?

WeakHashMap中的关键对象变得弱可达。并且map应该在GC之后删除条目。但是对值对象的强引用仍然存在。为什么?使用Guava弱键映射观察到相同的行为。预期输出:...refKey.get=nullrefValue.get=null但是我得到了输出:map.keys=[]map.values=[]map.size=0refKey.get=nullrefValue.get=(123)代码:importjava.lang.ref.WeakReference;importjava.util.Map;importjava.util.WeakHashMap;importcom.google

java - toString()、==、equals() 对象方法在引用和原始类型上的工作方式有何不同或相似?

toString()方法、==运算符和equals()方法在引用和原始类型上的工作方式有何不同或相似之处? 最佳答案 对于常规类型(包括String):==比较对象引用。它测试两个对象引用是否相等;即,如果它们指的是同一个对象。equals(Object)测试这个对象是否“等于”另一个对象。“等于”的含义取决于对象的类如何定义相等性。java.lang.Object类将equals(other)定义为this==other,但许多类会覆盖此定义。toString()提供对象到字符串的简单转换。生成的字符串的格式和内容是特定于类的,并

java - 抽象类可以用作引用类型吗?

我不太确定这意味着什么,我的教科书正在围绕答案跳舞。 最佳答案 是的,你可以:abstractclassAbstractClass{}classDeclaredClassextendsAbstractClass{}AbstractClassc=newDeclaredClass();以上是完全有效的。 关于java-抽象类可以用作引用类型吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questi