https://github.com/devan-kerman/signatureutil
an api for parsing ASM signatures
https://github.com/devan-kerman/signatureutil
Last synced: about 1 year ago
JSON representation
an api for parsing ASM signatures
- Host: GitHub
- URL: https://github.com/devan-kerman/signatureutil
- Owner: Devan-Kerman
- Created: 2021-02-20T16:19:28.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-02-20T17:34:36.000Z (over 5 years ago)
- Last Synced: 2025-05-17T06:41:00.875Z (about 1 year ago)
- Language: Java
- Size: 81.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SignatureUtil
An actually good signature api for asm signatures.
On Jitpack
[](https://jitpack.io/#Devan-Kerman/SignatureUtil)
```gradle
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
// don't worry I never break compat
implementation 'com.github.Devan-Kerman:SignatureUtil:-SNAPSHOT'
}
```
```java
import java.util.ArrayList;
import net.devtech.signutil.v0.api.*;
import net.devtech.signutil.v0.api.bounded.*;
import net.devtech.signutil.v0.api.type.*;
import net.devtech.signutil.v0.api.type.reference.*;
public class Examples {
public void classSignatures() {
ClassSignature signature = ClassSignature.create(
"Ljava/lang/ref/Reference;Ljava/util/function/Consumer;");
// read and parse signatures
List parameters = signature.getTypeParameters();
for (TypeParameter parameter : parameters) {
// T, V
System.out.println(parameter.getIdentifier());
// Ljava/lang/Object;
System.out.println(parameter.getClassBound());
// [], [Ljava/lang/Runnable;]
System.out.println(parameter.getInterfaceBounds());
}
// generate and modify signatures
List change = new ArrayList<>(parameters);
change.set(0, change.get(0).withIdentifier("C")); // T -> C
// Ljava/lang/ref/Reference;Ljava/util/function/Consumer;
System.out.println(signature.withTypeParameters());
}
// there's MethodSignature too!
}
```