Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I'm trying to derive my class from generic class:

class foo<T> {}
class bar : foo<Int> {}

But this code fails to compile with en error:

Classes derived from generic classes must also be generic

How to avoid this limitation? Is it possible?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
483 views
Welcome To Ask or Share your Answers For Others

1 Answer

Ssreg,

Unfortunately this is official:

You can subclass a generic class, but the subclass must also be a generic class.

Let us hope Apple fixes this in a future version.

Meanwhile, let us see this as an opportunity to exploit aggregation instead of subclassing.

NOTE:

As a poor man's version of a solution, one could use typealias:

class foo<T> {}
class bar<Int> : foo<Int> {}
typealias Bar = bar<Int>

This way, the rest of the code can be written just as if Apple already fixed the matter.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share

548k questions

547k answers

4 comments

86.3k users

...