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 |