草庐IT

java - 为什么这段代码不抛出 NullPointerException?

背景我想了解为什么一段代码不会抛出NullPointerException。源代码考虑以下代码:publicclassAgent{publicListfiles=newArrayList();publicvoiddeliver(){if(files!=null&&files.iterator().hasNext()){Filefile=(File)files.iterator().next();}files=newArrayList();}}deliver方法被重复调用,而下面的代码在单独的线程中运行:publicvoidrun(){agent.files=null;}只有一个agen

java - Java 中的这段递归 lambda 调用是如何工作的

我最近在Java中看到了这段代码。它涉及函数和打印斐波那契数,并且有效。publicclassAppLambdaSubstitution{publicstaticFunctionY(Function,Function>f){returnx->f.apply(Y(f)).apply(x);}publicstaticvoidmain(String[]args){Functionfib=Y(func->x->{if(x让我感到困惑的部分是returnx->f.apply(Y(f)).apply(x);。Y(f)不是递归调用Y方法吗?我们一直使用函数f作为参数调用它。对我来说,这个递归调用没有

java - 这段代码如何给我 0 作为 i 的值,而不是 20?

这个问题在这里已经有了答案:Javainstancevariablesinitializationwithmethod(6个答案)关闭6年前。我排除了i:20的值,但它给了我值0,为什么我在java1.7版本中得到值0?publicclassInvalidValue{privateinti=giveMeJ();privateintj=20;privateintgiveMeJ(){returnj;}publicstaticvoidmain(String[]args){System.out.println("i:"+newInvalidValue().i);}}

java - 我可以使用 Collection.size() 来替换这段代码中的计数器吗?

代码如下:publicclassLogService{privatefinalBlockingQueuequeue;privatefinalLoggerThreadloggerThread;privatefinalPrintWriterwriter;@GuardedBy("this")privatebooleanisShutdown;@GuardedBy("this")privateintreservations;//这是JavaConcurrencyinPractice一书的片段,我在想也许计数器reservations是不必要的,因为我们可以简单地使用queue.size()获取q

java - 这段 delaunay 三角剖分代码是如何工作的?

我有这段Java代码,它在输入中输入一组点,返回一组表示Delaunay三角剖分的图边。我想知道使用什么策略来执行此操作,如果存在,使用的算法名称。在此代码中,GraphEdge包含两个awtPoint并表示三角剖分中的一条边,GraphPoint扩展了AwtPoint,最终三角剖分的边在TreeSet对象中返回。我的目的是了解此方法的工作原理:publicTreeSetgetEdges(intn,int[]x,int[]y,int[]z)下面是这个三角剖分的完整源代码:importjava.awt.Point;importjava.util.Iterator;importjava.u

java - 为什么这段代码用 eclipse 编译器编译而不用 javac (maven)

有一堆这样的问题。我经历了其中的大部分,但实际上没有,但我想不出任何答案:我的一个GWT/GWTP类中有一个奇怪的问题。该类在Eclipse编译器中编译良好,但在javac编译器(Maven)中编译失败。//additionalimportsimportcom.gwtplatform.mvp.client.PresenterWidget;importcom.gwtplatform.mvp.client.View;publicclassMyPresenterextendsPresenterWidget{publicinterfaceMyViewextendsView{}somecode}

java - 这段代码不应该产生 ClassCastException

以下代码编译运行成功,没有任何异常importjava.util.ArrayList;classSuperSample{}classSampleextendsSuperSample{@SuppressWarnings("unchecked")publicstaticvoidmain(String[]args){try{ArrayListsList=newArrayList();Objecto=sList;ArrayListssList=(ArrayList)o;ssList.add(newSuperSample());}catch(Exceptione){e.printStackTra

java - 复合策略模式 - java - 这段代码有多糟糕?

这个问题是我之前帖子的延续:Visitorpatternimplementationinjava-Howdoesthislook?重构我的代码时我有点困惑。我正在尝试将我的访问者模式(在之前的帖子中进行了解释)转换为复合策略模式。我正在尝试做这样的事情:publicinterfaceRule{publicListcheck(Validatablevalidatable);}现在,我将定义如下规则:publicclassValidCountryRule{publicListcheck(Validatablevalidatable){//invokeDAOanddosomething,if

java - 这段 Java 代码中的短路逻辑有什么问题?

为什么func3没有在下面的程序中执行?在func1之后,func2不需要求值,但是对于func3,不是吗?if(func1()||func2()&&func3()){System.out.println("true");}else{System.out.println("false");}}publicstaticbooleanfunc1(){System.out.println("func1");returntrue;}publicstaticbooleanfunc2(){System.out.println("func2");returnfalse;}publicstaticbo

java - 当我在四核机器上使用多线程时,为什么这段代码看不到任何显着的性能提升?

我写了一些Java代码来学习更多关于Executor框架的知识。具体来说,我编写了代码来验证CollatzHypothesis-这表示如果您将以下函数迭代应用于任何整数,您最终会得到1:f(n)=((n%2)==0)?n/2:3*n+1CH仍未得到证实,我认为这是了解Executor的好方法。每个线程都分配了一个整数范围[l,u]来检查。具体来说,我的程序有3个参数-N(我要检查CH的数字)、RANGESIZE(线程必须处理的间隔的长度)和NTHREAD,线程池的大小。我的代码运行良好,但我看到的加速比我预期的要少得多——当我从1个线程变为4个线程时,加速大约为30%。我的逻辑是计算完