René's URL Explorer Experiment


Title: Records for data classes | java.evolved

Open Graph Title: Records for data classes | java.evolved

X Title: Records for data classes | java.evolved

Description: One line replaces 30+ lines of boilerplate for immutable data carriers.

Open Graph Description: One line replaces 30+ lines of boilerplate for immutable data carriers.

X Description: One line replaces 30+ lines of boilerplate for immutable data carriers.

Opengraph URL: https://javaevolved.github.io/language/records-for-data-classes.html

direct link

Domain: javaevolved.github.io


Hey, it has json ld scripts:
  {
    "@context": "https://schema.org",
    "@type": "TechArticle",
    "headline": "Records for data classes",
    "description": "One line replaces 30+ lines of boilerplate for immutable data carriers.",
    "url": "https://javaevolved.github.io/records-for-data-classes.html",
    "publisher": {
        "@type": "Organization",
        "name": "java.evolved",
        "url": "https://javaevolved.github.io"
    },
    "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://javaevolved.github.io/records-for-data-classes.html"
    }
}
  
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
        {
            "@type": "ListItem",
            "position": 1,
            "name": "Home",
            "item": "https://javaevolved.github.io/"
        },
        {
            "@type": "ListItem",
            "position": 2,
            "name": "Language",
            "item": "https://javaevolved.github.io/#language"
        },
        {
            "@type": "ListItem",
            "position": 3,
            "name": "Records for data classes"
        }
    ]
}
  

theme-color#f97316
mobile-web-app-capableyes
apple-mobile-web-app-status-bar-styleblack-translucent
apple-mobile-web-app-titlejava.evolved
og:typearticle
og:site_namejava.evolved
og:localeen
og:imagehttps://javaevolved.github.io/og/language/records-for-data-classes.png
og:image:width1200
og:image:height630
og:image:typeimage/png
twitter:cardsummary_large_image
twitter:imagehttps://javaevolved.github.io/og/language/records-for-data-classes.png

Links:

java.evolvedhttps://javaevolved.github.io/
https://github.com/javaevolved/javaevolved.github.io
← All patternshttps://javaevolved.github.io/
https://javaevolved.github.io/language/pattern-matching-instanceof.html
https://javaevolved.github.io/language/sealed-classes.html
Homehttps://javaevolved.github.io/
Languagehttps://javaevolved.github.io/#language
🐛 Report a code issuehttps://github.com/javaevolved/javaevolved.github.io/issues/new?template=code-issue.yml&title=%5BCode%20Issue%5D%20Records%20for%20data%20classes&category=language&slug=records-for-data-classes
🌐 Report a translation issuehttps://github.com/javaevolved/javaevolved.github.io/issues/new?template=translation-issue.yml&title=%5BTranslation%5D%20Records%20for%20data%20classes%20%28English%29&locale=en&pattern=records-for-data-classes&area=Pattern%20content
💡 Suggest a new patternhttps://github.com/javaevolved/javaevolved.github.io/issues/new?template=new-pattern.yml
𝕏https://x.com/intent/tweet?url=https%3A%2F%2Fjavaevolved.github.io%2Flanguage%2Frecords-for-data-classes.html&text=Records%20for%20data%20classes%20%E2%80%93%20java.evolved
🦋https://bsky.app/intent/compose?text=Records%20for%20data%20classes%20%E2%80%93%20java.evolved%20https%3A%2F%2Fjavaevolved.github.io%2Flanguage%2Frecords-for-data-classes.html
inhttps://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fjavaevolved.github.io%2Flanguage%2Frecords-for-data-classes.html
https://www.reddit.com/submit?url=https%3A%2F%2Fjavaevolved.github.io%2Flanguage%2Frecords-for-data-classes.html&title=Records%20for%20data%20classes%20%E2%80%93%20java.evolved
Let us know.https://github.com/javaevolved/javaevolved.github.io/issues/new?template=code-issue.yml&title=%5BCode%20Issue%5D%20Records%20for%20data%20classes&category=language&slug=records-for-data-classes
Records (JEP 395) ↗https://openjdk.org/jeps/395
Record class ↗https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/lang/Record.html
View proof source ↗https://github.com/javaevolved/javaevolved.github.io/blob/main/proof/language/RecordsForDataClasses.java
Language Intermediate Flexible constructor bodies Java 8 class Square extends Shape { Square(double side) { super(side, side); // can't validate BEFORE super! if (side <= 0) throw new IAE("bad"); } } Java 25+ class Square extends Shape { Square(double side) { if (side <= 0) throw new IAE("bad"); super(side, side); } } Hover to see modern ➜ JDK 25+ → https://javaevolved.github.io/language/flexible-constructor-bodies.html
Language Intermediate Private interface methods Java 8 interface Logger { default void logInfo(String msg) { System.out.println( "[INFO] " + timestamp() + msg); } default void logWarn(String msg) { System.out.println( "[WARN] " + timestamp() + msg); } } Java 9+ interface Logger { private String format(String lvl, String msg) { return "[" + lvl + "] " + timestamp() + msg; } default void logInfo(String msg) { IO.println(format("INFO", msg)); } default void logWarn(String msg) { IO.println(format("WARN", msg)); } } Hover to see modern ➜ JDK 9+ → https://javaevolved.github.io/language/private-interface-methods.html
Language Intermediate Pattern matching in switch Java 8 String format(Object obj) { if (obj instanceof Integer i) return "int: " + i; else if (obj instanceof Double d) return "double: " + d; else if (obj instanceof String s) return "str: " + s; return "unknown"; } Java 21+ String format(Object obj) { return switch (obj) { case Integer i -> "int: " + i; case Double d -> "double: " + d; case String s -> "str: " + s; default -> "unknown"; }; } Hover to see modern ➜ JDK 21+ → https://javaevolved.github.io/language/pattern-matching-switch.html
java.evolvedhttps://javaevolved.github.io/
Bruno Borgeshttps://github.com/brunoborges
GitHub Copilothttps://github.com/features/copilot
modern-css.comhttps://modern-css.com
View on GitHubhttps://github.com/javaevolved/javaevolved.github.io

Viewport: width=device-width, initial-scale=1.0

Robots: index, follow


URLs of crawlers that visited me.