Skip to content

Instantly share code, notes, and snippets.

@timsneath
Last active May 4, 2021 23:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timsneath/d9f817d0aaacd5069ded5d469261e494 to your computer and use it in GitHub Desktop.
Save timsneath/d9f817d0aaacd5069ded5d469261e494 to your computer and use it in GitHub Desktop.
abstract class BaseObject {
final String species;
BaseObject(this.species);
}
class Rabbit extends BaseObject {
Rabbit(String species) : super(species);
}
class Orange extends BaseObject {
Orange(String species) : super(species);
}
T doMagicPerformance<T extends BaseObject>(BaseObject object) {
// Hide orange in hat
final hiddenObject = object.species;
// Do magic
for (var i = 0; i <= 10; i++) {
print('Abracadabra'[i]);
}
final newObject = T(hiddenObject.species);
// Abracadabra!
return newObject;
}
void main() {
Orange orange = Orange('Citrus sinesis');
Rabbit rabbit = doMagicPerformance<Rabbit>(orange);
print(rabbit.species);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment