https://github.com/xuwei-k/shapeless-java-records
derive `shapeless.Generic` instances for Java Records and Sealed Classes
https://github.com/xuwei-k/shapeless-java-records
generic-programming java macros scala shapeless
Last synced: 5 months ago
JSON representation
derive `shapeless.Generic` instances for Java Records and Sealed Classes
- Host: GitHub
- URL: https://github.com/xuwei-k/shapeless-java-records
- Owner: xuwei-k
- License: mit
- Created: 2020-09-29T07:41:01.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-09-07T07:16:22.000Z (6 months ago)
- Last Synced: 2025-09-07T09:17:08.099Z (6 months ago)
- Topics: generic-programming, java, macros, scala, shapeless
- Language: Scala
- Homepage:
- Size: 108 KB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# shapeless java records
[](https://javadoc.io/doc/com.github.xuwei-k/shapeless-java-records_2.13)
## setup
- install jdk 15 or later
- `build.sbt`
```scala
// if jdk 15 or 16
javacOptions ++= Seq("--enable-preview", "--release", scala.util.Properties.javaSpecVersion)
scalaVersion := // 2.12.x or 2.13.x
libraryDependencies += "com.github.xuwei-k" %% "shapeless-java-records" % "latest version"
// https://github.com/scala/bug/issues/11908
// https://github.com/scala/bug/issues/12159
compileOrder := CompileOrder.JavaThenScala
```
- run `sbt -J--enable-preview`
## usage
```scala
import shapeless._
import shapeless.JavaRecordGeneric._
// summon shapeless.Generic instances
Generic[YourJavaRecordType]
Generic[YourJavaSealedType]
```
### LabelledGeneric
```scala
import shapeless._
import shapeless.JavaRecordGeneric._
import shapeless.JavaRecordGeneric.string._ // string label
// or import shapeless.JavaRecordGeneric.symbol._
LabelledGeneric[YourJavaRecordType]
LabelledGeneric[YourJavaSealedType]
```