Skip to content

Commit 673d772

Browse files
SCALA-5: scala generics sample code
1 parent a9a0a15 commit 673d772

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package com.baeldung.scala.generics
2+
3+
object GenericsIntro {
4+
5+
case class Apple(name: String)
6+
7+
def main(args: Array[String]): Unit = {
8+
NonGenericWay.run()
9+
}
10+
11+
object LongHandWay {
12+
13+
case class AppleMagicHat(magic: Apple)
14+
15+
case class RabbitMagicHat(magic: Rabbit)
16+
17+
def run(): Unit = {
18+
val someHat = AppleMagicHat(Apple("gala"))
19+
val apple: Apple = someHat.magic
20+
println(apple.name)
21+
}
22+
}
23+
24+
object NonGenericWay {
25+
26+
case class MagicHat(magic: AnyRef)
27+
28+
def run(): Unit = {
29+
val someHat = MagicHat(Rabbit(2))
30+
val apple: Apple = someHat.magic.asInstanceOf[Apple]
31+
println(apple.name)
32+
}
33+
}
34+
35+
object GenericWay {
36+
37+
case class MagicHat[A](magic: A)
38+
39+
def run(): Unit = {
40+
val rabbitHat = MagicHat[Rabbit](Rabbit(2))
41+
val rabbit: Rabbit = rabbitHat.magic
42+
println(rabbit.cuteness)
43+
}
44+
}
45+
46+
case class Rabbit(cuteness: Int)
47+
48+
object GenericMethods {
49+
def middle[A](input: Seq[A]): A = input(input.size / 2)
50+
51+
def itemsAt[A, B](index: Int, seq1: Seq[A], seq2: Seq[B]): (A, B) = (seq1(index), seq2(index))
52+
53+
def run() = {
54+
55+
val rabbits = List[Rabbit](Rabbit(2), Rabbit(3), Rabbit(7))
56+
val middleRabbit: Rabbit = middle[Rabbit](rabbits)
57+
58+
val apples = List[Apple](Apple("gala"), Apple("pink lady"))
59+
val items: (Rabbit, Apple) = itemsAt[Rabbit, Apple](1, rabbits, apples)
60+
}
61+
62+
}
63+
64+
object NonGenericMethods {
65+
def totalSize(list1: List[_], list2: List[_]): Int = list1.length + list2.length
66+
def run() = {
67+
val rabbits = List[Rabbit](Rabbit(2), Rabbit(3), Rabbit(7))
68+
val strings = List("a", "b")
69+
val size: Int = totalSize(rabbits, strings)
70+
}
71+
72+
}
73+
74+
}

0 commit comments

Comments
 (0)