
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __javax_management_ObjectInstance__
#define __javax_management_ObjectInstance__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace management
    {
        class ObjectInstance;
        class ObjectName;
    }
  }
}

class javax::management::ObjectInstance : public ::java::lang::Object
{

public:
  ObjectInstance(::javax::management::ObjectName *, ::java::lang::String *);
  ObjectInstance(::java::lang::String *, ::java::lang::String *);
  virtual jboolean equals(::java::lang::Object *);
  virtual ::java::lang::String * getClassName();
  virtual ::javax::management::ObjectName * getObjectName();
  virtual jint hashCode();
private:
  static const jlong serialVersionUID = -4099952623687795850LL;
  ::javax::management::ObjectName * __attribute__((aligned(__alignof__( ::java::lang::Object)))) name;
  ::java::lang::String * className;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_management_ObjectInstance__
