<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style='font-size: 10pt; font-family: Verdana,Geneva,sans-serif'>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">Dear all, <br /> I write following piece of code to check whether a method is an override method.</div>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0">
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">
<p><span>private</span> <span>boolean</span> isoverride(SootMethod smethod, SootClass declaringClass) {</p>
<p><span class="Apple-tab-span"> </span>Hierarchy hierarchy = Scene.v().getActiveHierarchy();</p>
<p><span class="Apple-tab-span"> </span>List<SootClass> superclasses = hierarchy.getDirectSuperclassesOf(declaringClass);</p>
<p><span class="Apple-tab-span"> </span>List<SootClass> superinterfaces = hierarchy.getSuperinterfacesOf(declaringClass);</p>
<p><span class="Apple-tab-span"> </span><span>if</span>(smethod.getName().equals(<span>"<init>"</span>)){</p>
<p><span class="Apple-tab-span"> </span><span>if</span>(superclasses!=<span>null</span>){</p>
<p><span class="Apple-tab-span"> </span><span>if</span>(superclasses.size()==0)</p>
<p><span><span class="Apple-tab-span"> </span></span>return<span> </span>false<span>;</span></p>
<p><span class="Apple-tab-span"> </span><span>else</span></p>
<p><span><span class="Apple-tab-span"> </span></span>return<span> </span>true<span>;</span></p>
<p><span class="Apple-tab-span"> </span>}</p>
<p><span class="Apple-tab-span"> </span><span>if</span>(superinterfaces!=<span>null</span>){</p>
<p><span class="Apple-tab-span"> </span><span>if</span>(superinterfaces.size()==0)</p>
<p><span><span class="Apple-tab-span"> </span></span>return<span> </span>false<span>;</span></p>
<p><span class="Apple-tab-span"> </span><span>else</span></p>
<p><span><span class="Apple-tab-span"> </span></span>return<span> </span>true<span>;</span></p>
<p><span class="Apple-tab-span"> </span>}</p>
<p><span><span class="Apple-tab-span"> </span></span>return<span> </span>false<span>;</span></p>
<p><span class="Apple-tab-span"> </span>}</p>
<p><span class="Apple-tab-span"> </span><span>if</span>(superclasses!=<span>null</span>){</p>
<p><span class="Apple-tab-span"> </span><span>for</span>(SootClass cls:superclasses){</p>
<p><span class="Apple-tab-span"> </span><span>if</span>(cls.getMethodByName(smethod.getName()) != <span>null</span>){</p>
<p><span><span class="Apple-tab-span"> </span></span>return<span> </span>true<span>;</span></p>
<p><span class="Apple-tab-span"> </span>}</p>
<p><span class="Apple-tab-span"> </span>}</p>
<p><span class="Apple-tab-span"> </span>}</p>
<p><span class="Apple-tab-span"> </span><span>if</span>(superinterfaces!=<span>null</span>){</p>
<p><span class="Apple-tab-span"> </span><span>for</span>(SootClass cls:superinterfaces){</p>
<p><span class="Apple-tab-span"> </span><span>if</span>(cls.getMethodByName(smethod.getName()) != <span>null</span>){</p>
<p><span><span class="Apple-tab-span"> </span></span>return<span> </span>true<span>;</span></p>
<p><span class="Apple-tab-span"> </span>}</p>
<p><span class="Apple-tab-span"> </span>}</p>
<p><span class="Apple-tab-span"> </span>}</p>
<p><span><span class="Apple-tab-span"> </span></span>return<span> </span>false<span>;</span></p>
<p><span class="Apple-tab-span"> </span>}</p>
</div>
</blockquote>
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">
<p>When I run this code, </p>
<p>It crashed with annotation:</p>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0">
<p><span>java.lang.RuntimeException</span><span>: Not implemented yet!</span></p>
</blockquote>
<p>for statment <span>List<SootClass> superclasses = hierarchy.getDirectSuperclassesOf(declaringClass);</span></p>
<p><span>Thanks</span></p>
<p><span>Best</span></p>
<p><span>Chris.</span></p>
</div>
</body></html>