本文整理汇总了C++中Method::is_init方法的典型用法代码示例。如果您正苦于以下问题:C++ Method::is_init方法的具体用法?C++ Method::is_init怎么用?C++ Method::is_init使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Method
的用法示例。
在下文中一共展示了Method::is_init方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: reflection_reflect_constructor
/*
* Class: java_lang_VMClassRegistry
* Method: getEnclosingMember
* Signature: (Ljava/lang/Class;)Ljava/lang/reflect/Member;
*/
JNIEXPORT jobject JNICALL Java_java_lang_VMClassRegistry_getEnclosingMember
(JNIEnv *jenv, jclass, jclass jclazz)
{
assert(jclazz);
Class* clazz = jclass_to_struct_Class(jclazz);
unsigned method_idx = clazz->get_enclosing_method_index();
if (method_idx) {
unsigned c_idx = clazz->get_enclosing_class_index();
ASSERT(c_idx, ("No class for enclosing method"));
Class* outer_clss = clazz->_resolve_class(VM_Global_State::loader_env, c_idx);
if (outer_clss)
{
String* name = clazz->get_constant_pool().get_name_and_type_name(method_idx);
String* desc = clazz->get_constant_pool().get_name_and_type_descriptor(method_idx);
TRACE("Looking for enclosing method: class="<<outer_clss->get_name()->bytes
<<"; name="<<name->bytes<<"; desc="<<desc->bytes);
Method* enclosing = outer_clss->lookup_method(name, desc);
if (enclosing)
{
if (enclosing->is_init())
{
return reflection_reflect_constructor(jenv, enclosing);
}
else if (!enclosing->is_clinit())
{
return reflection_reflect_method(jenv, enclosing);
}
} else {
//FIXME: check RI compatibility, provide detailed message
ThrowNew_Quick(jenv, "java/lang/NoSuchMethodException",
"Invalid enclosing method declared");
}
} else if (!exn_raised()) {
exn_raise_object(clazz->get_constant_pool().get_error_cause(c_idx));
}
}
return NULL;
}