可能重复:
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) 我正在开发一个已经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客户端,我们使用服务器方提供的连接器(如客户端(它实际上包括所有与地球相关的类)的连接器连接到他们的服务器(我认为这非常奇怪) .如果我从连接器移动任何东西,它将使支持协议无效.所以我不想删除地铁罐,而是找到适应它的替代方法.
在最后一个条件下,我期望从运算符"&&"左侧的表达式开始计算条件,该表达式变为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)