Skip to content

Instantly share code, notes, and snippets.

@jimbaker
Last active August 29, 2015 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jimbaker/1a1e78da425bbdf0b50b to your computer and use it in GitHub Desktop.
Save jimbaker/1a1e78da425bbdf0b50b to your computer and use it in GitHub Desktop.
$ jython27 -Dpython.security.respectJavaAccessibility=false
Jython 2.7b3+ (default:68aaff268c3c, Sep 10 2014, 20:03:31)
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.7.0_21
>>> from org.python.tests import Invisible
>>> dir(Invisible)
['EXTRA_ARG_PUBLIC_METHOD', 'EXTRA_ARG_PUBLIC_STATIC_METHOD', 'OVERLOADED_EXTRA_ARG_PUBLIC_METHOD', 'OVERLOADED_PROTECTED_METHOD', 'OVERLOADED_PUBLIC_METHOD', 'OVERLOADED_PUBLIC_STATIC_METHOD', 'OVERLOADED_STATIC_METHOD', 'PACKAGE_FIELD', 'PACKAGE_METHOD', 'PACKAGE_STATIC_FIELD', 'PACKAGE_STATIC_METHOD', 'PROTECTED_FIELD', 'PROTECTED_METHOD', 'PROTECTED_STATIC_FIELD', 'PROTECTED_STATIC_METHOD', 'PUBLIC_FIELD', 'PUBLIC_METHOD', 'PUBLIC_METHOD_FIELD', 'PUBLIC_STATIC_FIELD', 'PUBLIC_STATIC_METHOD', 'PUBLIC_STATIC_METHOD_FIELD', 'SUBCLASS_OVERLOAD', 'SUBCLASS_OVERRIDE', 'SUBCLASS_STATIC_OVERLOAD', 'SUBCLASS_STATIC_OVERRIDE', 'SUBVISIBLE_SHARED_NAME_FIELD', 'UNUSED', 'VISIBLE_SHARED_NAME_FIELD', '__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__', '__ensure_finalizer__', '__eq__', '__format__', '__getattribute__', '__hash__', '__init__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__subclasshook__', '__unicode__', 'class', 'clone', 'equals', 'finalize', 'getClass', 'hashCode', 'notify', 'notifyAll', 'packageField', 'packageMethod', 'packageStaticField', 'packageStaticMethod', 'privateField', 'privateMethod', 'privateStaticField', 'privateStaticMethod', 'protectedField', 'protectedMethod', 'protectedStaticField', 'protectedStaticMethod', 'registerNatives', 'toString', 'wait']
>>> x = Invisible()
>>> x.privateField
0
>>> x.privateMethod()
7
# Note the differences when run without accessiblity - we don't see private methods, we cannot call the private constructor
$ jython27
Jython 2.7b3+ (default:68aaff268c3c, Sep 10 2014, 20:03:31)
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.7.0_21
Type "help", "copyright", "credits" or "license" for more information.
>>> from org.python.tests import Invisible
>>> dir(Invisible)
['EXTRA_ARG_PUBLIC_METHOD', 'EXTRA_ARG_PUBLIC_STATIC_METHOD', 'OVERLOADED_EXTRA_ARG_PUBLIC_METHOD', 'OVERLOADED_PROTECTED_METHOD', 'OVERLOADED_PUBLIC_METHOD', 'OVERLOADED_PUBLIC_STATIC_METHOD', 'OVERLOADED_STATIC_METHOD', 'PACKAGE_FIELD', 'PACKAGE_METHOD', 'PACKAGE_STATIC_FIELD', 'PACKAGE_STATIC_METHOD', 'PROTECTED_FIELD', 'PROTECTED_METHOD', 'PROTECTED_STATIC_FIELD', 'PROTECTED_STATIC_METHOD', 'PUBLIC_FIELD', 'PUBLIC_METHOD', 'PUBLIC_METHOD_FIELD', 'PUBLIC_STATIC_FIELD', 'PUBLIC_STATIC_METHOD', 'PUBLIC_STATIC_METHOD_FIELD', 'SUBCLASS_OVERLOAD', 'SUBCLASS_OVERRIDE', 'SUBCLASS_STATIC_OVERLOAD', 'SUBCLASS_STATIC_OVERRIDE', 'SUBVISIBLE_SHARED_NAME_FIELD', 'UNUSED', 'VISIBLE_SHARED_NAME_FIELD', '__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__', '__ensure_finalizer__', '__eq__', '__format__', '__getattribute__', '__hash__', '__init__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__subclasshook__', '__unicode__', 'class', 'equals', 'getClass', 'hashCode', 'notify', 'notifyAll', 'toString', 'wait']
>>> x = Invisible()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: No visible constructors for class (org.python.tests.Invisible)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment