我们都知道String
Java 中是不可变的,但请检查以下代码:
String s1 = "Hello World";
String s2 = "Hello World";
String s3 = s1.substring(6);
System.out.println(s1); // Hello World
System.out.println(s2); // Hello World
System.out.println(s3); // World
Field field = String.class.getDeclaredField("value");
field.setAccessible(true);
char[] value = (char[])field.get(s1);
value[6] = 'J';
value[7] = 'a';
value[8] = 'v';
value[9] = 'a';
value[10] = '!';
System.out.println(s1); // Hello Java!
System.out.println(s2); // Hello Java!
System.out.println(s3); // World
Run Code Online (Sandbox Code Playgroud)
为什么这个程序运行这样?为什么价值s1
和s2
变化,但不是s3
?
class A implements Serializable{
private static final long serialVersionUID = 5L;
...
}
Run Code Online (Sandbox Code Playgroud)
和
class B implements Serializable{
private static final long serialVersionUID = 6L;
...
}
Run Code Online (Sandbox Code Playgroud)
那么有必要给serialVersionUID
这两个类赋予独特性.
那么我可以分配serialVersionUID = 5L
两个班级吗?
我读了以下链接
由于某种原因,我必须删除旧文件并根据我们的客户端创建新文件
修改日期是更改为当前时间,但创建日期不会更改为当前时间.
我的代码如下
public static void main(String args[]) throws Exception {
FileUtils.deleteQuietly(new File("d:\\inbox\\json\\test.txt"));
FileWriter fileWriter = new FileWriter("d:\\inbox\\json\\test.txt", false);
fileWriter.append(new Date().toString());
fileWriter.close();
}
Run Code Online (Sandbox Code Playgroud)
此代码删除旧数据并写入新数据
但为什么日期创建的时间不会改变..
请帮我弄清楚我的代码有什么问题.提前致谢.
我Java 1.7
在我的代码中使用,现在我想替换JAVA 1.7
为JAVA 1.8
.Is Java 1.8
兼容Java 1.7
.?
它会像以前一样工作吗?我的意思是,Java 1.8的所有新功能都可以用在现有的代码中吗?
我正在使用Java + Groovy脚本。是否可以更改由Groovy类名称(Script1.groovy,Script777.groovy等)生成的值?如果出现异常,很难找到正确的脚本:/
Caused by: org.json.JSONException: JSONObject["value14"] not found.
at org.json.JSONObject.get(JSONObject.java:498)
at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at org.codehaus.groovy.runtime.metaclass.MethodMetaProperty$GetMethodMetaProperty.getProperty(MethodMetaProperty.java:59)
at org.codehaus.groovy.runtime.callsite.GetEffectivePojoPropertySite.getProperty(GetEffectivePojoPropertySite.java:61)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:227)
at Script4.run(Script4.groovy:23)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:346)
... 13 more
Run Code Online (Sandbox Code Playgroud) 我想使用wsdl文件从camel调用第三方web服务,而不使用任何生成客户端代码(因为我认为如果我提供wsdl文件,那么我们可以生成我们之前生成的客户端,并且在我们的旧代码中工作)
经过长时间的搜索,我找到了一些帮助我实现目标的代码
代码是
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.dataformat.soap.Soap11DataFormatAdapter;
import org.apache.camel.dataformat.soap.Soap12DataFormatAdapter;
import org.apache.camel.dataformat.soap.name.ServiceInterfaceStrategy;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.model.dataformat.SoapJaxbDataFormat;
import com.camel.model.Application;
public class TestMain {
static CamelContext context;
public static void main(String args[]) throws Exception {
CamelContext context = new DefaultCamelContext();
ProducerTemplate template = context.createProducerTemplate(0);
context.start();
String url="cxf://http://localhost:8081/buzzor-service/services/ApplicationService?" +
"wsdlURL=http://localhost:8081/buzzor-service/services/ApplicationService?wsdl&" +
"serviceName={http://service.application.buzzor.atpl.com}ApplicationService&" +
"portName={http://service.application.buzzor.atpl.com}ApplicationServiceHttpPort&" +
"dataFormat=MESSAGE";
Exchange reply = sendSimpleMessage(template, url);
org.apache.camel.Message out = reply.getOut();
String result = out.getBody(String.class);
System.out.println(result);
Thread.sleep(10000);
context.stop();
}
private static Exchange sendSimpleMessage(ProducerTemplate template, …
Run Code Online (Sandbox Code Playgroud) 最初,我问了这个问题
我通过设置fetchSize
来解决这个Integer.MIN_VALUE
问题,但我对此有一些疑问
Integer.MIN_VALUE
,为什么这样?Integer.MIN_VALUE
就是-2147483648
那么,为什么不给错误?resultset
在获取100或200条记录后关闭,然后需要30-35秒的时间.resultset
.我想在这里添加更多内容我已经用MySQL驱动程序对它进行了测试并且它接受Integer.MIN_VALUE
但是当我在SQL服务器中测试相同的代码时它会给出错误The fetch size cannot be negative.
,如果我将其设置为10然后它可以工作,它也适用于Oracle.
java ×7
apache-camel ×1
cxf ×1
file ×1
groovy ×1
groovyshell ×1
immutability ×1
jsonobject ×1
reflection ×1
resultset ×1
soap ×1
string ×1
web-services ×1