diff --git a/src/de/inetsoftware/jwebassembly/module/nativecode/ReplacementForClass.java b/src/de/inetsoftware/jwebassembly/module/nativecode/ReplacementForClass.java index f725e40..b5c3a6c 100644 --- a/src/de/inetsoftware/jwebassembly/module/nativecode/ReplacementForClass.java +++ b/src/de/inetsoftware/jwebassembly/module/nativecode/ReplacementForClass.java @@ -229,7 +229,7 @@ class ReplacementForClass { * @return true, if type {@code cls} can be assigned to objects of this class */ @WasmTextCode( "unreachable" ) // TODO - public native boolean isAssignableFrom( Class cls ); + public native boolean isAssignableFrom( ReplacementForClass cls ); /** * Replacement of the Java method isInterface() @@ -501,4 +501,19 @@ class ReplacementForClass { throw new ClassCastException("Cannot cast " + obj.getClass().getName() + " to " + getName()); return (T) obj; } + + /** + * Replacement of the Java method asSubclass(Class) + * + * @param clazz + * the class of the type to cast this class object to + * @return this + */ + @SuppressWarnings( "unchecked" ) + public ReplacementForClass asSubclass( ReplacementForClass clazz ) { + if( clazz.isAssignableFrom( this ) ) + return (ReplacementForClass)this; + else + throw new ClassCastException( this.toString() ); + } }