Software Engineering for Smart Data Analytics & Smart Data Analytics for Software Engineering
Represents the class or interface declaration. Every interface declaration is accompanied by the additional fact: interfaceT(#id).
Every annotation declaration is accompanied by an interfaceT(#id) and an annotationT(#id) fact.
If it is an abstract class, there will be an additional modifierT(Class, 'abstract') fact.
Renamed in JT 2.8: Up to 2.8.0 it was defined as classDefT.
Changed in JT 2.6: Now 'owner' referst to a compilationUnitT instead of a packageT. See notes on Changes JTranformer 2.5 -> 2.6.
#id: id
the unique ID assigned to this fact.
#parent: execT, compilationUnitT, classT, newClassT
ID of the element that contains this class declaration.
'name': atom
the class name, without a package. In the case of anonymous classes, a globally unique name: ANONYMOUS$<UN>, where <UN> is a unique number.
#paramRef: typeParamT
List of the type parameters of the class.
[#def_1,…]: annotationMemberT, classT, fieldT, methodT, constructorT, classInitializerT
list of IDs for other facts representing the methods or fields, and inner classes. These fields and methods are the members (not necessarily public!) of the class.
class HelloWorld { //corresponding code line to classT ... }
classT(#id, #parentElement, 'HelloWorld', [], [#members ...]).
ast_node_def('Java',classT,[ ast_arg(id, mult(1,1,no ), id, [classT]), % <-- convention!!! ast_arg(parent, mult(1,1,no ), id, [execT, compilationUnitT, classT, newT, blockT]), ast_arg(name, mult(1,1,no ), attr,[atomic]), ast_arg(paramRef,mult(0,*,ord ),id, [typeParamT]), ast_arg(defs, mult(0,*,ord), id, [annotationMemberT, classT, fieldT, methodT, constructorT, classInitializerT]) ]).