通常你创建一个protobuf的类的实例是这样的:如何使用java反射创建protobuf实例?
Bar.Builder bld = Bar.newBuilder();
bld.setXYZ(...
我有一个使用Java反射来实例化的protobuf类的用例:
Class clsBar = Class.forName("com.xyz.Foo$Bar");
Object instance = clsBar.newInstance(); // error here!
Method mth = clsBar.getMethod(...);
上面的代码工作正常与正常的Java类。但是对于生成的protobuf类"com.xyz.Foo$Bar"
,它给了我一个NoSuchMethodException
,因为那里没有默认的公共构造函数。
有关如何使用Java反射创建protobuf实例的任何建议?问题在于那些擅长protobuf内部构件的人。谢谢!
如果您调用clsBar.getConstructors()并在返回的构造函数对象之一上调用.newInstance()方法,该怎么办? – Duston
你有什么信息?只有期望的课程或更多?如果你想从字节数组或类似的地方创建一个Protobuf实例,你可以使用'parseFrom'方法。 – dpr
@Duston所有的构造函数都是私有的,就像protobuf实现一样。对于dpr,我只有生成protobuf类的全限定类名。 –