Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public abstract class AbstractNodeType {
- // ..
- public abstract <T extends AbstractNode> T createInstance();
- }
- public class ThingType {
- // ..
- public Thing createInstance() {
- return new Thing(/* .. */);
- }
- }
- // FYI
- public class Thing extends AbstractNode { /* .. */ }
- interface Node{
- }
- interface NodeType<T extends Node>{
- T createInstance();
- }
- class Thing implements Node{}
- class ThingType implements NodeType<Thing>{
- public Thing createInstance() {
- return new Thing();
- }
- }
- class UberThing extends Thing{}
- class UberThingType extends ThingType{
- @Override
- public UberThing createInstance() {
- return new UberThing();
- }
- }
- public abstract class AbstractNodeType<T extends AbstractNode> {
- public abstract T createInstance();
- }
- public class ThingType<Thing> {
- public Thing createInstance() {
- return new Thing(...);
- }
- }
Add Comment
Please, Sign In to add comment