In my previous blog How many fat interfaces are there in SAP system I introduce the concept of “fat interface”. In this blog let’s explore the concept of tag interface.
There is definition for tag interface in ABAP help:
“Specific predefined global interface. By integrating the tag interface, classes or other interfaces stand out against the ABAP runtime environment. A tag interface generally does not contain its own interface components, but instead assigns a particular task to the integrating classes or interfaces and changes the way they are handled by the ABAP Compiler.“
And in fact this is not a specific concept of ABAP, but exists in many other language as well.
ABAP tag interface
One of the most famous tag interface in ABAP is if_serializable_object.
I used it in my blog Singleton bypass – ABAP and Java.
An object instance of class which implements this tag interface could be serialized to an XML String.
The actual serialization and deserialization is done in the kernel.
Another tag interface IF_BADI_INTERFACE
In you BAdI definition, it is impossible to use an interface without including this tag interface.
Even if you bypass this check via tricks like debugging in ABAP layer, there is still kernel check in the runtime as last defense.
Tag interface in Java
As I mentioned the tag interface is a generic concept which is available in many other language like Java. See more generic definition in Wikipedia.
The tag/ marker interface pattern is a design pattern in computer science, used with languages that provide run-time type information about objects. It provides a means to associate metadata with a class where the language does not have explicit support for such metadata.
Java Serialization
Still use serialization for example. Java has its own tag interface for serialization, Serializable. ( just exactly the same logic as if_serializable_object in ABAP ).
Further reading
I have written a series of blogs which compare the language feature among ABAP, JavaScript and Java. You can find a list of them below:
Lazy Loading, Singleton and Bridge design pattern in JavaScript and in ABAP
Functional programming – Simulate Curry in ABAP
Functional Programming – Try Reduce in JavaScript and in ABAP
Simulate Mockito in ABAP
A simulation of Java Spring dependency injection annotation @Inject in ABAP
Singleton bypass – ABAP and Java
Weak reference in ABAP and Java
Fibonacci Sequence in ES5, ES6 and ABAP
Java byte code and ABAP Load
How to write a correct program rejected by compiler: Exception handling in Java and in ABAP
An small example to learn Garbage collection in Java and in ABAP
String Template in ABAP, ES6, Angular and React
Try to access static private attribute via ABAP RTTI and Java Reflection
Local class in ABAP, Java and JavaScript
Integer in ABAP, Java and JavaScript
Covariance in Java and simulation in ABAP
Various Proxy Design Pattern implementation variants in Java and ABAP
Tag(Marker) Interface in ABAP and Java
Bitwise operation ( OR, AND, XOR ) on ABAP Integer
ABAP ICF handler and Java Servlet