{"id":24794171,"url":"https://github.com/shubhamv108/java-immutable","last_synced_at":"2025-03-24T17:47:49.822Z","repository":{"id":186316113,"uuid":"549834484","full_name":"shubhamv108/java-immutable","owner":"shubhamv108","description":"Simple programs to demonstrate holding immutable data in java objects.","archived":false,"fork":false,"pushed_at":"2024-01-13T18:51:00.000Z","size":65,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-29T22:44:46.592Z","etag":null,"topics":["immutable","java","java-record","java14"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shubhamv108.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-11T20:12:50.000Z","updated_at":"2022-10-11T20:25:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"e319fc86-5482-4024-9ab0-bba22d18f695","html_url":"https://github.com/shubhamv108/java-immutable","commit_stats":null,"previous_names":["shubhamv108/java-immutable"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shubhamv108%2Fjava-immutable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shubhamv108%2Fjava-immutable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shubhamv108%2Fjava-immutable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shubhamv108%2Fjava-immutable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shubhamv108","download_url":"https://codeload.github.com/shubhamv108/java-immutable/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245321547,"owners_count":20596364,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["immutable","java","java-record","java14"],"created_at":"2025-01-29T22:34:30.797Z","updated_at":"2025-03-24T17:47:49.803Z","avatar_url":"https://github.com/shubhamv108.png","language":"Java","readme":"```\npublic final class PersonImmutable {\n\n    private final String name;\n    private final HashMap\u003cString, String\u003e info;\n\n    private final Address address;\n\n    public PersonImmutable(final String name, final HashMap\u003cString, String\u003e info, final Address address) {\n        this.name = name; // String is immutable for security \u0026 concurrency.\n        this.info = new HashMap\u003c\u003e(info);\n        this.address = address.clone();\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public HashMap\u003cString, String\u003e getInfo() {\n        return new HashMap\u003c\u003e(info);\n    }\n\n    public Address getAddress() {\n        return this.address.clone();\n    }\n\n    @Override\n    public boolean equals(Object o) {\n        if (this == o)\n            return true;\n        if (!(o instanceof PersonImmutable))\n            return false;\n        PersonImmutable person = (PersonImmutable) o;\n        return Objects.equals(name, person.name) \u0026\u0026\n               Objects.equals(info, person.info);\n    }\n\n    @Override\n    public int hashCode() {\n        return Objects.hash(name, info);\n    }\n\n    @Override\n    public String toString() {\n        return \"PersonImmutable[\" +\n                \"name=\" + name + \", \" +\n                \"info=\" + info + \", \" +\n                \"address=\" + address + ']';\n    }\n}\n```\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n```\npublic record PersonRecord(String name, HashMap\u003cString, String\u003e info, Address address) {\n\n    public PersonRecord(final String name, final HashMap\u003cString, String\u003e info, final Address address) {\n        this.name = name; // String is immutable for security \u0026 concurrency.\n        this.info = new HashMap\u003c\u003e(info);\n        this.address = address;\n    }\n\n    @Override\n    public HashMap\u003cString, String\u003e info() {\n        return new HashMap\u003c\u003e(info);\n    }\n\n    public Address address() {\n        return this.address.clone();\n    }\n}\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshubhamv108%2Fjava-immutable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshubhamv108%2Fjava-immutable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshubhamv108%2Fjava-immutable/lists"}