我对 java 中的序列化有了一些了解。我的基本理解是,它是一种机制,可以将对象的状态持久化并将其写入流,以便我们可以在后面的任何时间点或未创建对象的任何其他“JVM”中对其进行扩充和使用。现在假设我有一个类 A 并创建类 A 的一个实例,即对象 a ,将其序列化并将其存储在文件 "A.ser" 中。我将文件复制到其他系统并反序列化文件“A.ser”以获得对象 a 的持久状态。但在那种情况下,A 的类定义应该存在于我反序列化对象的另一个系统中!有什么办法可以保存类定义并将其传输到另一个系统,
我是Java的初学者.我学到的第一件事是可执行类的main()方法应该是公共的,并且给出的理由是因为这个方法将由JVM调用,它应该在类外可见,因此应该是公共的.现在在学习系列化我发现,writeObject()和readObject()一个私有方法Serializable的类可以由JVM而序列化被称为和反序列化对象!如果它们是私有方法,那么JVM如何调用它们?如果它可以为什么它不能调用main()方法?
翻阅一些java文档后,我读到了这句话"JVM可以访问对象的私有方法".因为我们使用ObjectInputStream的实例调用readObject(),所以JVM可以访问它,而main()方法是静态或类方法,并且在没有实例化类的任何对象的情况下调用应该是公共的,以便JVM可以访问!那有意义吗 ?我不知道 .
是否仅为覆盖将子类对象分配给超类实例类型?或者我们是否也为此做其他事情?
示例:Sub是Super和的子类型
Super s = new Sub();
请解释.
为什么在其构造函数中实例化同类的对象会抛出StackOverflowError?例如 ,
public class A {
public A () {
A a = new A()
}
}
Run Code Online (Sandbox Code Playgroud)
会抛出StackOverFlowError?
我正在学习java,并且在通过ClassNotFoundException概念的过程中,我遇到了这个术语Class.forName("xyz");.我知道这是加载课程的一种方式.我的问题是,在java中加载类的不同方法有哪些?什么时候使用哪一个?什么比其他更受欢迎?
JSP代码是:
<jsp:useBean id="person" class="org.example.model.PersonModel" scope="session">
</jsp:useBean>
<br> Name : <jsp:getProperty property="name" name="person"/>
<br> Surname : <jsp:getProperty property="surname" name="person"/>
Run Code Online (Sandbox Code Playgroud)
虽然我在request范围内设置了java对象,而不是在sessionController Servlet 中的范围内,我将请求转发给此Servlet.<jsp:useBean>虽然标记中提到的范围是会话,但如何获取请求属性?如果它用于pageContext.findAttribute()获取属性,那么在该<jsp:useBean>标记中使用scope属性有什么用?
我想知道为什么下面的代码不起作用:
System.out.print(null);
response.getWriter().print(null);
Run Code Online (Sandbox Code Playgroud)
但是下面的工作:
String s = null;
System.out.print(s);
response.getWriter().print(s);
Run Code Online (Sandbox Code Playgroud)
传递a null与传递引用之间的区别是null什么?
编辑: 前面提到的工作不表示编译错误.
为什么我使用这样的简单线程:
Thread t = new Thread(new Runnable() {
public void run(){
while(true){
.....
idLabel.setText(Date.toString);
Thread.sleep(1000);`
}
t.start();
Run Code Online (Sandbox Code Playgroud)
我有这个错误:
java.lang.IllegalStateException:不在FX应用程序线程上; currentThread = Thread-4
但如果我使用输入文本(如idInputText)而不是标签我没有错误?
我有一个枚举
public enum citys
{
a=1,
b=1,
c=1,
d=2,
e=2,
f=2,
};
Run Code Online (Sandbox Code Playgroud)
我希望Name以价值为基础返回.例如,在foreach return Enum.GetNames那里Value =1
result --> a,b,c
foreach return Enum.GetNames that Value =2
result --> d,e,f
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
java ×9
asp.net ×1
c# ×1
classloader ×1
constructor ×1
enums ×1
foreach ×1
javafx-2 ×1
jsp ×1
jvm ×1
oop ×1
outputstream ×1
persistent ×1
private ×1
public ×1
reference ×1
request ×1
thread-local ×1
usebean ×1