在下面的示例中,GSON似乎能够在不使用声明的构造函数的情况下在下面的程序中创建Program(p
)的实例,同时也不存在其他零arg构造函数。这是如何通过图书馆完成的?
import com.google.gson.*;
import java.lang.reflect.*;
public class Program
{
private final String _id;
private Program(String id)
{
System.out.println("Constructor called.");
_id = id;
}
public static void main(String[] args)
{
Gson gson = new Gson();
String json = "{\"_id\":\"id1\"}";
Program p = gson.fromJson(json, Program.class);
System.out.println(p._id);
boolean noArgConstructorAvailable;
try
{
Object ctor = Program.class.getConstructor();
noArgConstructorAvailable = ctor != null;
}
catch(NoSuchMethodException e)
{
noArgConstructorAvailable = false;
}
System.out.println(noArgConstructorAvailable);
}
}
输出:
id1
false