src/JavaClass.st
branchjk_new_structure
changeset 1031 de1813ce77de
parent 1028 d30cabc12354
child 1033 a31de6a4cfa4
equal deleted inserted replaced
1030:9f87a1830611 1031:de1813ce77de
  2030     ^ self isSubclassOf:aJavaClass.
  2030     ^ self isSubclassOf:aJavaClass.
  2031 
  2031 
  2032     "Created: / 30-05-2011 / 23:07:18 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
  2032     "Created: / 30-05-2011 / 23:07:18 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
  2033 !
  2033 !
  2034 
  2034 
  2035 includesBehavior: aClass 
  2035 includesBehavior: aClass
  2036     ^ (aClass isJavaClass not or: [ aClass isInterface not ]) 
  2036 
  2037         ifTrue: [ self name == aClass name or:[ super includesBehavior: aClass ]]
  2037     "Answer true, iff
  2038         ifFalse: [
  2038         (i)   receiver == aClass
  2039             self name == aClass name or: [ self allInterfaces includes: aClass ]
  2039         (ii)  aClass is ordinary class and receiver inherits from
       
  2040               aClass
       
  2041         (iii) aClass is interface and receiver or one of its superclasses
       
  2042               implements that interface
       
  2043     "
       
  2044 
       
  2045     self == aClass ifTrue:[^true].
       
  2046     aClass isJavaClass ifFalse:[^false].
       
  2047 
       
  2048     ^aClass isInterface ifTrue:[
       
  2049         self allInterfaces includes: aClass        
       
  2050     ] ifFalse:[
       
  2051         super includesBehavior: aClass
       
  2052     ]
       
  2053 
       
  2054     "Created: / 05-02-2011 / 23:44:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  2055     "Modified: / 20-10-2011 / 16:11:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  2056 !
       
  2057 
       
  2058 isSubclassOf: aClass
       
  2059 
       
  2060     | cls |
       
  2061     aClass isNil ifTrue:[^false].
       
  2062     cls := self.
       
  2063     [ cls notNil ] whileTrue:[
       
  2064         "JV-2011-10-20: Q: is one subclass of another if its
       
  2065          are subclass but loaded using different classloader?"
       
  2066         cls == aClass ifTrue:[
       
  2067             ^true
  2040         ].
  2068         ].
  2041 
  2069         cls := cls superclass.
  2042     "Created: / 05-02-2011 / 23:44:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  2070     ].
  2043     "Modified: / 11-02-2011 / 09:12:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  2071     ^false
  2044 !
  2072 
  2045 
  2073     "Created: / 20-10-2011 / 16:15:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  2046 isSubclassOf:  aJavaClass
       
  2047 |tmpClass|
       
  2048 
       
  2049 tmpClass := self superclass.
       
  2050 [tmpClass isJavaClass] whileTrue: [tmpClass = aJavaClass ifTrue:[^true]. tmpClass := tmpClass superclass].
       
  2051 ^false.
       
  2052 
       
  2053     "Created: / 13-04-2011 / 23:18:03 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
       
  2054 ! !
  2074 ! !
  2055 
  2075 
  2056 !JavaClass methodsFor:'reflection'!
  2076 !JavaClass methodsFor:'reflection'!
  2057 
  2077 
  2058 lookupFieldByNameAndType: aJavaNameAndType 
  2078 lookupFieldByNameAndType: aJavaNameAndType