java中ruby YAML.load(object)和YAML.dump(serialized_str)的等价物是什么
在ruby中,我可以像这样序列化和反序列化:java中ruby YAML.load(object)和YAML.dump(serialized_str)的等价物是什么,java,android,ruby,serialization,deserialization,Java,Android,Ruby,Serialization,Deserialization,在ruby中,我可以像这样序列化和反序列化: # file.rb class C end s = YAML.dump(C.new) # other_file_and_other_time.rb r = YAML.load(s) puts "r.inspect:#{r.inspect} ---- #{::File.basename __FILE__}:#{__LINE__}" # r.inspect:#<C:0x007f4ff27e6c08> ---- timer.rb:9 pa
# file.rb
class C
end
s = YAML.dump(C.new)
# other_file_and_other_time.rb
r = YAML.load(s)
puts "r.inspect:#{r.inspect} ---- #{::File.basename __FILE__}:#{__LINE__}"
# r.inspect:#<C:0x007f4ff27e6c08> ---- timer.rb:9
package ro.ex;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
class Ex {
static class MyArrayList<E> extends ArrayList<E> {
public MyArrayList(Collection c) {
super(c);
}
}
public static void main(String[] args) throws IOException {
// file.java
String s = new Gson().toJson(new Ex());
// otherFile.java
Object r = new Gson().fromJson(s, Ex.class);
System.out.println(r + "\t\t" + new Exception().getStackTrace()[0].getFileName() + ":" + new Exception().getStackTrace()[0].getLineNumber());
}
}
#file.rb
C类
终止
s=YAML.dump(C.new)
#其他文件和其他时间.rb
r=YAML.荷载(s)
放置“r.inspect:#{r.inspect}----#{::File.basename uuu File uuu}:#{uuu行uu}”
#r.inspect:#----定时器。rb:9
在java中,我可以做类似的事情:
# file.rb
class C
end
s = YAML.dump(C.new)
# other_file_and_other_time.rb
r = YAML.load(s)
puts "r.inspect:#{r.inspect} ---- #{::File.basename __FILE__}:#{__LINE__}"
# r.inspect:#<C:0x007f4ff27e6c08> ---- timer.rb:9
package ro.ex;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
class Ex {
static class MyArrayList<E> extends ArrayList<E> {
public MyArrayList(Collection c) {
super(c);
}
}
public static void main(String[] args) throws IOException {
// file.java
String s = new Gson().toJson(new Ex());
// otherFile.java
Object r = new Gson().fromJson(s, Ex.class);
System.out.println(r + "\t\t" + new Exception().getStackTrace()[0].getFileName() + ":" + new Exception().getStackTrace()[0].getLineNumber());
}
}
包装ro.ex;
导入com.google.gson.gson;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.Collection;
前级{
静态类MyArrayList扩展了ArrayList{
公共MyArrayList(集合c){
超级(c);
}
}
公共静态void main(字符串[]args)引发IOException{
//file.java
字符串s=new Gson().toJson(new Ex());
//otherFile.java
Object r=new Gson().fromJson(s,Ex.class);
System.out.println(r+“\t\t”+新异常().getStackTrace()[0]。getFileName()+”:“+新异常().getStackTrace()[0]。getLineNumber());
}
}
但我希望省略类型参数:
package ro.ex;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
class Ex {
static class MyArrayList<E> extends ArrayList<E> {
public MyArrayList(Collection c) {
super(c);
}
}
public static void main(String[] args) throws IOException {
// file.java
String s = new Gson().toJson(new Ex());
// otherFile.java
Object r = new Gson().fromJson(s);
System.out.println(r + "\t\t" + new Exception().getStackTrace()[0].getFileName() + ":" + new Exception().getStackTrace()[0].getLineNumber());
}
}
包装ro.ex;
导入com.google.gson.gson;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.Collection;
前级{
静态类MyArrayList扩展了ArrayList{
公共MyArrayList(集合c){
超级(c);
}
}
公共静态void main(字符串[]args)引发IOException{
//file.java
字符串s=new Gson().toJson(new Ex());
//otherFile.java
Object r=new Gson().fromJson;
System.out.println(r+“\t\t”+新异常().getStackTrace()[0]。getFileName()+”:“+新异常().getStackTrace()[0]。getLineNumber());
}
}
所以我的问题是:如何在没有特定类型的情况下进行反序列化。(传递最后的代码)Ruby是一种“鸭子”式的动态类型语言,因为它,您可以做类似的事情。
但是Java有一个静态的、安全的和强大的类型规则,所以你不能做这样的事情
然而,由于您已经在“android”标签下标记了您的问题,因此可能会对您有所帮助,需要更多的代码,但这正是您需要的
同时检查以下链接:
- :“包裹生成”库,Google AutoValue的por
- :另一个图书馆,没有使用过,但似乎更受欢迎