草庐IT

局部剪枝

全部标签

java - 'programming to interfaces' 的最佳实践是否适用于局部变量?

有人告诉我,针对局部变量的接口(interface)编程是无用的,不应该这样做,因为它只会损害性能而没有任何好处。publicvoidfoo(){ArrayListnumbers=newArrayList();//dolist-ystuffwithnumbers}代替publicvoidfoo(){Listnumbers=newArrayList();//dolist-ystuffwithnumbers}我觉得性能影响可以忽略不计,但不可否认的是,使用ArrayList的列表语义并没有太大好处。有充分的理由选择一种方式吗? 最佳答案

java - 为什么在eclipse中调试jdk库,看不到局部变量值?

问题是在调试java库类时,例如HashSet函数我看不到局部变量。在variables选项卡上,我只能看到函数参数和this的字段。当我试图将局部变量添加到watch时,eclipse说:“评估期间出错”。所以我的问题是为什么会发生这种情况?我如何才能看到这些局部变量值? 最佳答案 长话短说,JDK发行版没有使用调试信息进行编译。检查这些问题的答案:HowtodebugJDKsourceHowcanIcheckondebugsymbolstatuswithEclipse? 关于java

java - java中的局部变量

我了解了局部变量和类变量的概念。但我一直有一个疑问“为什么我们不能将局部变量声明为static”?例如假设我们有一个play()函数:voidplay(){staticinti=5;System.out.println(i);}它在eclipse中给我错误:Illegalmodifierforparameteri;我有这个疑问是因为我读过以下概念:方法内的变量:范围是局部的,即在该方法内。当变量声明为static时,它存在于整个类中,即不存在于特定对象中。谁能帮我澄清一下这个概念。谢谢。 最佳答案 因为局部变量的范围仅限于周围的bl

java - 为什么 final 是 Java 中局部变量的唯一修饰符?

classTest{publicstaticvoidmain(String[]args){privateintx=10;publicinty=20;protectedintz=30;staticintw=40;finalinti=50;}}此处唯一适用的修饰符是final;对于其他修饰符,程序给出编译器错误。这是为什么?请详细说明。 最佳答案 简而言之-在这种情况下,其他修饰符都没有意义。说一个变量是public、private、protected或static在上下文中根本没有意义一旦方法退出,将超出范围(并被垃圾收集)的局部变量

java - Java中有线程组局部变量吗?

我正在寻找一个类似于ThreadLocal的类,它可以在线程组而不是线程上工作。如果没有这样的类(在某些开源库中),您将如何实现它?有比在WeakHashMap中使用线程组更好的主意吗?我正在使用全局、每线程和每线程组上下文中的各种参数实现一个在运行时可调的调试框架。作为一个非常简单的例子,你可以有一个报告声明:debug.log(category,message);并指定只有当服务于网络请求的线程组中的线程调用时,才会显示具有该特定类别的日志条目。 最佳答案 ThreadGroup很少使用,所以没有平台支持。使用[Weak/Ide

java - 为什么我在访问最终局部变量时在 Java 中出现此 InstantiationException?

我正在玩一些代码来制作一个“类似闭包”的构造(顺便说一句,不起作用)一切看起来都很好,但是当我尝试访问代码中的最终局部变量时,抛出了异常InstantiationException。如果我通过完全删除局部变量或将其设为类属性来删除对局部变量的访问,则不会发生异常。文档说:InstantiationExceptionThrownwhenanapplicationtriestocreateaninstanceofaclassusingthenewInstancemethodinclassClass,butthespecifiedclassobjectcannotbeinstantiated

java - 方法局部内部类只能访问最终局部变量。为什么?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Whyinnerclassesrequire“final”outerinstancevariables[Java]?Whyareonlyfinalvariablesaccessibleinanonymousclass?classOuter{privateStringx="instancevariable";voiddoStuff(){Stringz="localvariable";classInner{publicvoidseeOuter(){System.out.println("Outerxis:"+x);

java - 为什么在HashMap.keySet()中声明局部变量ks?

这个问题在这里已经有了答案:assigninstancefieldtolocalvariable(2个答案)关闭5年前。查看源码java.util.HashMap,看到如下代码:publicSetkeySet(){Setks;return(ks=keySet)==null?(keySet=newKeySet()):ks;}(Windows,Java版本“1.8.0_111”)在我的MacBook上它看起来像这样:publicSetkeySet(){Setks=keySet;if(ks==null){ks=newKeySet();keySet=ks;}returnks;}(MacOsXS

java - 局部变量初始化 null 和不初始化之间的区别?

在Java中,有什么区别和最好的方法?Integerx=null;//xlaterassignsomevalue.Integery;//ylaterinitializeanduseit. 最佳答案 答案取决于您指的是什么类型的变量。对于类变量,没有区别,参见JLS-4.12.5.InitialValuesofVariables:...Everyvariableinaprogrammusthaveavaluebeforeitsvalueisused:Forallreferencetypes(§4.3),thedefaultvaluei

java - ThreadLocal 与 Runnable 中的局部变量

ThreadLocal和Runnable中的局部变量哪个优先?出于性能原因。我希望使用局部变量能为cpu缓存等提供更多机会。 最佳答案 WhichoneamongThreadLocaloralocalvariableinRunnablewillbepreferred.如果您有一个在线程类(或Runnable)中声明的变量,那么局部变量将起作用,您不需要ThreadLocal。newThread(newRunnable(){//noneedtomakethisathreadlocalbecauseeachthreadalready//