小编Jim*_*mmy的帖子

为什么我没有得到NullPointerException?

可能重复:
Java中空引用的静态字段

我知道静态方法是在类级别上.所以我知道我不需要创建实例来调用静态方法.但我也知道我可以调用静态方法LIKE一个实例方法.这是我感到困惑的地方,因为我期待NullPointerException从null对象调用静态方法(如在调用实例方法中).我真的很感激为什么我错在NullPointerException这里期待一些解释.

以下是示例代码:

public class SampleClass {

    public static int getSumStatic(int x, int y){
        return x+y;
    }

    public int getDifferenceInstance(int x, int y){
        return x-y;
    }
}

public class TestClass {

    public static void main (String[] args){        
    SampleClass sc=null;

    System.out.println(SampleClass.getSumStatic(2, 2)); //as expected

    //I was expecting NullPointerException in the next line, since I am accessing null object
    System.out.println(sc.getSumStatic(4,5)); //static method , executes perfectly  

    System.out.println(sc.getDifferenceInstance(6,4));//throws NullPointerException
    }
}
Run Code Online (Sandbox Code Playgroud)

java nullpointerexception

16
推荐指数
1
解决办法
745
查看次数

发送soap请求时发生ClassCastException

我正在开发一个已经metro基于Web服务客户端实现的项目.现在,我需要为不同的服务添加另一个客户端.我实现了新的客户端,但是现在它在有标题时抛出异常(需要标题).如果我删除所有地铁罐,这个新客户端工作正常,但显然我的城域客户端失败.我需要有关可能的选项,解决方法或解决方案的指导.

Caused by: javax.xml.ws.WebServiceException: java.lang.ClassCastException: com.sun.xml.ws.message.saaj.SAAJHeader cannot be cast to com.sun.xml.ws.security.opt.impl.outgoing.SecurityHeader
at com.sun.xml.wss.jaxws.impl.SecurityClientTube.processRequest(SecurityClientTube.java:250)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:961)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:910)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:873)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:775)
at com.sun.xml.ws.client.Stub.process(Stub.java:429)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:168)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:119)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:102)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:151)
at com.sun.proxy.$Proxy70.methodName(Unknown Source)
... 15 more

Caused by: java.lang.ClassCastException: com.sun.xml.ws.message.saaj.SAAJHeader cannot be cast to com.sun.xml.ws.security.opt.impl.outgoing.SecurityHeader
    at com.sun.xml.ws.security.opt.impl.JAXBFilterProcessingContext.setJAXWSMessage(JAXBFilterProcessingContext.java:166)
    at com.sun.xml.wss.jaxws.impl.SecurityTubeBase.secureOutboundMessage(SecurityTubeBase.java:381)
    at com.sun.xml.wss.jaxws.impl.SecurityClientTube.processClientRequestPacket(SecurityClientTube.java:323)
    at com.sun.xml.wss.jaxws.impl.SecurityClientTube.processRequest(SecurityClientTube.java:247)
Run Code Online (Sandbox Code Playgroud)

我发现这里有类似问题的问题很少,但他们最终都建议删除不适合我的标题.

PS:对于使用metro jar的现有webservice客户端,我们使用服务器方提供的连接器(如客户端(它实际上包括所有与地球相关的类)的连接器连接到他们的服务器(我认为这非常奇怪) .如果我从连接器移动任何东西,它将使支持协议无效.所以我不想删除地铁罐,而是找到适应它的替代方法.

java web-services java-metro-framework jax-ws soap-client

6
推荐指数
1
解决办法
937
查看次数

if条件中的编译错误

在最后一个条件下,我期望从运算符"&&"左侧的表达式开始计算条件,该表达式变为true,然后是右侧的语句.但是,我在这里收到编译错误,说"令牌上的语法错误"=",!= expected".对这个问题的任何解释都会有很大的帮助.

boolean boolTrue=Boolean.TRUE;
    boolean assignBool=Boolean.FALSE;
    int ten=10;

    //eventually evaluates to true , runs okay
    if(assignBool=boolTrue){
        System.out.println("Executed");
    }
    //evaluates to true && true: runs correctly
    if( assignBool=boolTrue && ten==10 )
        System.out.println("Executed");

    //evaluates to true && true : runs correctly
    if( ten==10 && (assignBool=boolTrue)  )
        System.out.println("Executed");

    /*was supposed to evaluate to true && true : but gives compile error
    compiler expects me to use '!=' or '==' operator though the second statement ultimately evaluates to true 
    as in above case*/
    if( …
Run Code Online (Sandbox Code Playgroud)

java compiler-errors conditional-statements

3
推荐指数
1
解决办法
159
查看次数