草庐IT

弱引用

全部标签

Java - 使用反射获取对静态类的引用

在Java中,是否可以使用反射访问静态类(嵌套)的实例?假设我在包Package1.SubPackage.SubSubPackage中定义了以下2个类:publicclassMyMainClass{publicstaticclassSalesObjectGrouper1{publicstaticfinalGrouperContextCONTEXT=newGrouperContext("MyDate");}privatestaticclassSalesObjectGrouper2{publicstaticfinalGrouperContextCONTEXT=newGrouperConte

java - "new"Java Lambda方法引用中的关键字

这个问题在这里已经有了答案:Referencetoaninstancemethodofaparticularobject(6个答案)关闭4年前。我见过很多在lambda方法引用中实例化新类的方法,但似乎无法理解原因。什么时候方法引用中需要new关键字?例如,以下通过编译:UnaryOperatorstringToUpperCase=String::toUpperCase;但这不是:UnaryOperatorstringToUpperCase=newString()::toUpperCase;

java - 为什么 JVM 不会在引用计数为 0 时立即销毁资源?

我一直想知道为什么Java中的垃圾收集器会在需要时激活而不是在执行时激活:if(obj.refCount==0){deleteobj;}Java的工作方式是否有我忽略的任何重大优势?谢谢 最佳答案 每个JVM都是不同的,但HotSpotJVM并不主要依赖引用计数作为垃圾收集的手段。引用计数的优点是易于实现,但它天生就容易出错。特别是,如果您有一个引用循环(一组对象在一个循环中相互引用),那么引用计数将无法正确回收这些对象,因为它们都具有非零引用计数。这迫使您不时使用辅助垃圾收集器,这往往会更慢(MozillaFirefox有这个确切

Java 按值传递和按引用传递

这个问题在这里已经有了答案:IsJava"pass-by-reference"or"pass-by-value"?(92个答案)关闭9年前。我已经完成了以下示例以检查我的知识importjava.util.Map;publicclassHashMap{publicstaticMapuseDifferentMap(MapvalueMap){valueMap.put("lastName","yyyy");returnvalueMap;}publicstaticvoidmain(String[]args){MapinputMap=newjava.util.HashMap();inputMap

(excel)偏移和索引/匹配都没有阻止表的引用单元移动

我有一个报告,该报告由3个不同的输入组成,3个不同的信息来源的相应输出选项卡。每个来源需要一个宏来更改数据的格式。这些来源之一需要单个日子的数据,因此当它将数据格式化为表格时,它正在将细胞复制并插入前一天的数据之上。一旦将5天的数据转换并堆叠在输出选项卡中,最终选项卡就将所有公式都称为“转换”选项卡。在此选项卡中,每个数据源(输出选项卡)有3个表,第四表可从这3个表中获取数据,并将它们结合到最终宏复制的内容中,并将值粘贴到新的表中。问题在于该表格通过插入新行来堆叠数据。我已经完成了从索引和匹配,偏移和匹配,简单偏移,vlookup(显然,这是首先的首选),甚至定义了新公式的名称,但是“转换”选

java - 新的 SimpleDateFormat 总是为给定的日期格式返回相同的引用

我试图通过跨多个线程使用相同的SimpleDateFormat实例来复制错误。但是我遇到了另一个问题并且没有找到任何答案。这个简单的代码块复制了我所看到的问题。DateFormatd1=newSimpleDateFormat("ddMMyyyy");DateFormatd2=newSimpleDateFormat("ddMMyyyy");DateFormatd3=newSimpleDateFormat("ddMMyy");System.out.println("d1="+d1);System.out.println("d2="+d2);System.out.println("d3="+

java - 我可以在 Java 中通过引用传递原始类型吗?

我想调用一个可能采用不同版本的方法,即对于以下类型的输入参数调用相同的方法:boolean值字节短内部长我想这样做的方法是“重载”方法(我认为这是正确的术语?):publicvoidgetValue(bytetheByte){...}publicvoidgetValue(shorttheShort){...}...etc......但这意味着我必须通过引用传递原始类型...类似于C++,其中方法具有外部效果,它可以在其范围之外修改变量。有没有办法在不创建新类或不使用原始类型的Object版本的情况下做到这一点?如果没有,对替代策略有什么建议吗?如果我应该进一步解释以消除任何混淆,请告诉

java - 按引用对象与按值引用

我在这里阅读了这条评论:PassingaStringbyReferenceinJava?Yes,it'samisconception.It'sahuge,widespreadmisconception.ItleadstoaninterviewquestionIhate:("howdoesJavapassarguments").Ihateitbecauseroughlyhalfoftheinterviewersactuallyseemtowantthewronganswer("primitivesbyvalue,objectsbyreference").Therightanswertak

Java 枚举 - 无法在定义之前引用字段

我有一个像下面这样的枚举,但Eclipse说每个对立对的第一个定义中有错误。publicenumBaz{yin(yang),//Cannotreferenceafieldbeforeitisdefinedyang(yin),good(evil),//Cannotreferenceafieldbeforeitisdefinedevil(good);publicfinalBazopposite;Baz(Bazopposite){this.opposite=opposite;}}我想要完成的是能够使用Baz.something.opposite获取Baz.something的opposite

Java - 引用变量

"Itisimportanttounderstandthatitisthetypeofreferencevariable-notthetypeofobjectthatitrefersto-thatdetermineswhatmemberscanbeaccessed."你所说的到底是什么意思?这仅限于继承的概念吗?JVM如何处理它? 最佳答案 这意味着假设你有:Objectx="hello";变量的类型是Object,但它引用的对象的类型是String。它是决定你可以做什么的变量类型-所以你不能调用//InvalidStringy=x