harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Zhang" <zhanghuang...@gmail.com>
Subject Re: [classlib][lang] Is it possible to new an object without invoking any constructor?
Date Thu, 15 Nov 2007 05:53:58 GMT
On Nov 15, 2007 1:22 PM, Jimmy,Jing Lv <firepure@gmail.com> wrote:

> A simple thought is using the JNI call AllocObject(JNIEnv *env, jclass
> clazz);
> however we need to implement a native api then :)
>

Thanks Jimmy!

AllocObject looks like what I want. ObjectInputStream#newInstance is even
closer (it has defined a native method). Is it possible to refactor?
Comments? Thanks!

Java_java_io_ObjectInputStream_newInstance (JNIEnv * env, jclass clazz,
                                            jobject instantiationClass,
                                            jobject constructorClass)
{
  jmethodID mid =
    (*env)->GetMethodID (env, constructorClass, "<init>", "()V");

  if (mid == 0)
    {
      /* Cant newInstance,No empty constructor... */
      return (jobject) 0;
    }
  else
    {
      /* Instantiate an object of a given class and constuct it using
         the constructor of the other class. */
      jobject obj;
      obj = (*env)->AllocObject(env, instantiationClass);  // I want this
method :)
      if (obj != NULL) {
        (*env)->CallNonvirtualVoidMethod(env, obj, constructorClass, mid);
      }
      return obj;
    }

}


> 2007/11/15, Andrew Zhang <zhanghuangzhu@gmail.com>:
> > Hi,
> >
> > Is it possible to new an object without invoking any constructor? I know
> the
> > question is a bit weird. What I want is to create an object with all
> > null/default value for its fields.
> > Reseting all fields to null by reflection is a possible solution, but is
> > there any existing special method (no matter it's low level or Harmony
> > specific) which can achieve this goal?
> > Thanks!
> >
> >
> > --
> > Best regards,
> > Andrew Zhang
> >
> > http://zhanghuangzhu.blogspot.com/
> >
>
>
> --
>
> Best Regards!
>
> Jimmy, Jing Lv
> China Software Development Lab, IBM
>



-- 
Best regards,
Andrew Zhang

http://zhanghuangzhu.blogspot.com/

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message