descriptionnone
repository URLhttps://github.com/sebhoss/generic-types.git
ownerrepoorcz@shoss.de
last changeSun, 8 Jan 2017 17:06:31 +0000 (8 18:06 +0100)
last refreshThu, 21 Nov 2024 07:41:31 +0000 (21 08:41 +0100)
content tags
add:
README.asciidoc
= Generic Types image:https://img.shields.io/badge/email-%40metio-brightgreen.svg?style=social&label=mail["Discuss on Google Groups", link="https://groups.google.com/forum/#!forum/metio"] image:https://img.shields.io/badge/irc-%23metio.wtf-brightgreen.svg?style=social&label=IRC["Chat on IRC", link="http://webchat.freenode.net/?channels=metio.wtf"]
Sebastian Hoß <http://seb.xn--ho-hia.de/[@sebhoss]>
:github-org: sebhoss
:project-name: generic-types
:project-group: de.xn--ho-hia.utils.types
:coverity-project: 7620
:codacy-project: 9402c820df454d3a83c697f254aeb1b3
:toc:
:toc-placement: preamble

image:https://img.shields.io/badge/license-cc%20zero-000000.svg?style=flat-square["CC Zero", link="http://creativecommons.org/publicdomain/zero/1.0/"]
pass:[<span class="image"><a class="image" href="https://maven-badges.herokuapp.com/maven-central/de.xn--ho-hia.utils.types/generic-types"><img src="https://img.shields.io/maven-central/v/de.xn--ho-hia.utils.types/generic-types.svg?style=flat-square" alt="Maven Central"></a></span>]
pass:[<span class="image"><a class="image" href="https://www.javadoc.io/doc/de.xn--ho-hia.utils.types/generic-types"><img src="https://www.javadoc.io/badge/de.xn--ho-hia.utils.types/generic-types.svg?style=flat-square&color=blue" alt="Read JavaDocs"></a></span>]
image:https://reposs.herokuapp.com/?path={github-org}/{project-name}&style=flat-square["Repository size"]
image:https://www.openhub.net/p/{project-name}/widgets/project_thin_badge.gif["Open Hub statistics", link="https://www.openhub.net/p/{project-name}"]

image:https://img.shields.io/travis/{github-org}/{project-name}/master.svg?style=flat-square["Build Status", link="https://travis-ci.org/{github-org}/{project-name}"]
image:https://img.shields.io/coveralls/{github-org}/{project-name}/master.svg?style=flat-square["Code Coverage", link="https://coveralls.io/github/{github-org}/{project-name}"]
image:https://img.shields.io/coverity/scan/{coverity-project}.svg?style=flat-square["Coverity Scan Result", link="https://scan.coverity.com/projects/{github-org}-{project-name}"]
image:https://img.shields.io/codacy/grade/{codacy-project}.svg?style=flat-square["Codacy Code Quality", link="https://www.codacy.com/app/mail_7/{project-name}"]
image:https://img.shields.io/badge/forkable-yes-brightgreen.svg?style=flat-square["Can this project be forked?", link="https://basicallydan.github.io/forkability/?u={github-org}&r={project-name}"]
image:https://img.shields.io/maintenance/yes/2017.svg?style=flat-square["Is this thing still maintained?"]
image:https://img.shields.io/bountysource/team/metio/activity.svg?style=flat-square["Bounties on open tickets", link="https://www.bountysource.com/teams/metio"]

This https://www.java.com[Java] library provides a factory to create generic `java.lang.reflect.Type` variations, such as `Map<Number, Point>`.

=== Features

* Factory methods to create generic types, including wildcards.

=== Development Status

All currently required feature are implemented. This project is in maintenance mode.


== Usage

[source,java]
----
// Map<Number, Point>
final Type type = GenericTypes.generic(Map.class, Number.class, Point.class);

// List<Number>
final Type type = GenericTypes.generic(List.class, Number.class);
----

Super- and subtypes such as `List<? super Point>` or `List<? extends Number>` can be created in the following way:

[source,java]
----
// List<? super Point>
final Type type = GenericTypes.generic(List.class, GenericTypes.supertype(Point.class));

// List<? extends Number>
final Type type = GenericTypes.generic(List.class, GenericTypes.subtype(Number.class));
----

Use static imports to shorten the above calls to:

[source,java]
----
// List<? super Point>
final Type type = generic(List.class, supertype(Point.class));

// List<? extends Number>
final Type type = generic(List.class, subtype(Number.class));
----

and then go crazy with this:

[source,java]
----
// List<Map<? extends Number, ? super Point>>
final Type type = generic(List.class, generic(Map.class, subtype(Number.class), supertype(Point.class)));
----

=== Integration

To use this project just declare the following dependency inside your POM:

[source,xml,subs="attributes,verbatim"]
----
<dependencies>
  <dependency>
    <groupId>{project-group}</groupId>
    <artifactId>{project-name}</artifactId>
    <version>${version.generic-types}</version>
  </dependency>
</dependencies>
----

Replace `${version.generic-types}` with the pass:[<a href="http://search.maven.org/#search%7Cga%7C1%7Cg%3Ade.xn--ho-hia.utils.types%20a%3Ageneric-types">latest release</a>]. This project follows the link:http://semver.org/[semantic versioning guidelines].


=== Compatibility

This project is compatible with the following Java versions:

.Java compatibility
|===
| | 1.X.Y | 2.X.Y

| Java 8
| ✓
| ✓
|===

== License

To the extent possible under law, the author(s) have dedicated all copyright
and related and neighboring rights to this software to the public domain
worldwide. This software is distributed without any warranty.

You should have received a copy of the CC0 Public Domain Dedication along
with this software. If not, see http://creativecommons.org/publicdomain/zero/1.0/.

== Mirrors

* https://github.com/sebhoss/{project-name}
* https://bitbucket.org/sebhoss/{project-name}
* https://gitlab.com/sebastian.hoss/{project-name}
* http://v2.pikacode.com/sebhoss/{project-name}.java
* http://repo.or.cz/{project-name}.git
shortlog
2017-01-08 Sebastian Hoßfix update-maintenance-badge goalmaster
2017-01-08 Sebastian HoßUpdate maintenance badge
2016-07-17 Sebastian Hoßignore ansible markers
2016-07-17 Sebastian Hoßreplace ohloh w/ openhub
2016-07-16 Sebastian Hoßadd pikacode mirror
2016-07-09 Sebastian Hoßmaintenance badge target
2016-07-09 Sebastian Hoßconvert markdown -> asciidoc
2016-07-03 Sebastian Hoßfix forkability title
2016-07-02 Sebastian Hoßcannot use text replacement
2016-07-02 Sebastian Hoßfix links
2016-07-02 Sebastian Hoßfix badges
2016-07-02 Sebastian Hoßadd maintenance & bounty badges
2016-07-02 Sebastian Hadd forkability badge
2016-07-02 Sebastian Hoßadd CoC
2016-07-02 Sebastian Hoßadd changelog
2016-07-02 Sebastian Hoßadd repo size badge
...
tags
8 years ago generic-types-2.0.0-20160702231934 [maven-scm] copy for tag generic...
8 years ago generic-types-1.0.0 [maven-release-plugin] copy for...
heads
7 years ago master