4- Generic Classes
Jun 20, 2026 05:17
· 4:27
· English
· Whisper Turbo
· 3 Konekte
Transkript sa a ekspire nan 24 jou.
Ajoutè pou depo perpétuel →
Montre sèlman
0:03
S…
Speaker 1 (4- Generic Classes)
Let's see how generics prevent the problems we discussed earlier.
0:06
S…
Speaker 2 (4- Generic Classes)
So,
0:07
S…
Speaker 1 (4- Generic Classes)
let's add a new class in this package.
0:10
S…
Speaker 1 (4- Generic Classes)
We call this generic list to differentiate from
0:14
S…
Speaker 1 (4- Generic Classes)
the other list implementation.
0:17
S…
Speaker 1 (4- Generic Classes)
Now we want this class to be generic so we can reuse it to store different
0:21
S…
Speaker 1 (4- Generic Classes)
types of objects.
0:22
S…
Speaker 1 (4- Generic Classes)
So right after the name of the class we type is angle
0:26
S…
Speaker 1 (4- Generic Classes)
brackets and inside these brackets we type a capital T as
0:30
S…
Speaker 1 (4- Generic Classes)
in short for type or template.
0:32
S…
Speaker 1 (4- Generic Classes)
Now we could use any letters here,
0:33
S…
Speaker 1 (4- Generic Classes)
it doesn't have to be a T,
0:35
S…
Speaker 1 (4- Generic Classes)
but T is a common convention.
0:37
S…
Speaker 1 (4- Generic Classes)
Another convention is E
0:39
S…
Speaker 1 (4- Generic Classes)
as in short for element,
0:41
S…
Speaker 1 (4- Generic Classes)
we use that when we want to implement a class that acts as a collection.
0:44
S…
Speaker 1 (4- Generic Classes)
So it can store many elements.
0:46
S…
Speaker 1 (4- Generic Classes)
So here we could use either e or t.
0:49
S…
Speaker 1 (4- Generic Classes)
I'm going to go with t.
0:50
S…
Speaker 1 (4- Generic Classes)
Now this t is a type parameter for this class.
0:53
S…
Speaker 1 (4- Generic Classes)
So just like our methods can have parameters,
0:55
S…
Speaker 1 (4- Generic Classes)
our classes can have parameters as well.
0:58
S…
Speaker 1 (4- Generic Classes)
This T over here represents the type of objects we want to store in this
1:02
S…
Speaker 1 (4- Generic Classes)
list. When we create an instance of this class,
1:05
S…
Speaker 1 (4- Generic Classes)
we'll have to specify an argument or a value for this parameter.
1:08
S…
Speaker 1 (4- Generic Classes)
For example,
1:09
S…
Speaker 1 (4- Generic Classes)
back in our main class,
1:10
S…
Speaker 1 (4- Generic Classes)
let me delete all this code.
1:12
S…
Speaker 1 (4- Generic Classes)
If you want to create an instance
1:16
S…
Speaker 1 (4- Generic Classes)
of our generic list,
1:17
S…
Speaker 1 (4- Generic Classes)
we type new generic list.
1:19
S…
Speaker 1 (4- Generic Classes)
Now here we specify the type of objects we want to store in
1:23
S…
Speaker 1 (4- Generic Classes)
this list.
1:24
S…
Speaker 1 (4- Generic Classes)
For example,
1:25
S…
Speaker 1 (4- Generic Classes)
user.
1:25
S…
Speaker 1 (4- Generic Classes)
Or string.
1:27
S…
Speaker 1 (4- Generic Classes)
Or integer.
1:29
S…
Speaker 2 (4- Generic Classes)
Okay?
1:31
S…
Speaker 1 (4- Generic Classes)
So back to our generic less implementation this T represents the
1:35
S…
Speaker 1 (4- Generic Classes)
type of objects we want to store here Now we need an array of type T
1:39
S…
Speaker 1 (4- Generic Classes)
so private T array we call it items and
1:43
S…
Speaker 1 (4- Generic Classes)
set it to new T array of 10
1:46
S…
Speaker 1 (4- Generic Classes)
Now here we have a compilation error because the Java compiler doesn't know
1:50
S…
Speaker 1 (4- Generic Classes)
the type of T at this stage.
1:52
S…
Speaker 1 (4- Generic Classes)
Is it the character class or the string class or the user class?
1:55
S…
Speaker 1 (4- Generic Classes)
It doesn't know what it is.
1:56
S…
Speaker 1 (4- Generic Classes)
That is why it cannot instantiate it.
1:59
S…
Speaker 1 (4- Generic Classes)
Now one simple workaround is to use new object array here and
2:03
S…
Speaker 1 (4- Generic Classes)
then cast a result to T
2:08
S…
Speaker 1 (4- Generic Classes)
array.
2:09
S…
Speaker 2 (4- Generic Classes)
Okay,
2:10
S…
Speaker 1 (4- Generic Classes)
now just like before when it
2:13
S…
Speaker 1 (4- Generic Classes)
a field for keeping track of the number of items in this list.
2:16
S…
Speaker 1 (4- Generic Classes)
So private int count.
2:18
S…
Speaker 1 (4- Generic Classes)
Next we implement our add method,
2:20
S…
Speaker 1 (4- Generic Classes)
so public void add.
2:22
S…
Speaker 1 (4- Generic Classes)
Now instead of an integer or an object,
2:25
S…
Speaker 1 (4- Generic Classes)
we pass t.
2:26
S…
Speaker 1 (4- Generic Classes)
The type of t will be determined later when we create an instance
2:30
S…
Speaker 1 (4- Generic Classes)
of this class.
2:31
S…
Speaker 1 (4- Generic Classes)
So we call it item just like before.
2:33
S…
Speaker 1 (4- Generic Classes)
And here we store item in our array.
2:36
S…
Speaker 1 (4- Generic Classes)
So items of count plus plus equals item.
2:42
S…
Speaker 3 (4- Generic Classes)
Finally,
2:42
S…
Speaker 1 (4- Generic Classes)
we need our get method,
2:43
S…
Speaker 1 (4- Generic Classes)
so public t get integer index.
2:47
S…
Speaker 1 (4- Generic Classes)
Again,
2:48
S…
Speaker 1 (4- Generic Classes)
instead of an integer or an object,
2:50
S…
Speaker 1 (4- Generic Classes)
we return t.
2:52
S…
Speaker 1 (4- Generic Classes)
So here we return items
2:56
S…
Speaker 1 (4- Generic Classes)
of index.
2:57
S…
Speaker 2 (4- Generic Classes)
Now,
2:58
S…
Speaker 1 (4- Generic Classes)
back to our main class,
3:00
S…
Speaker 1 (4- Generic Classes)
when we create a generic list of integer and
3:05
S…
Speaker 1 (4- Generic Classes)
call the add method,
3:06
S…
Speaker 1 (4- Generic Classes)
Look, the type of this parameter becomes integer.
3:09
S…
Speaker 1 (4- Generic Classes)
So if I call this method and pass a string,
3:12
S…
Speaker 1 (4- Generic Classes)
I get a compile time error.
3:14
S…
Speaker 1 (4- Generic Classes)
This is the benefit of generics.
3:16
S…
Speaker 1 (4- Generic Classes)
This generic class ensures that every object in this list is an integer.
3:21
S…
Speaker 2 (4- Generic Classes)
Okay,
3:21
S…
Speaker 1 (4- Generic Classes)
now actually let's store this in a variable called
3:26
S…
Speaker 1 (4- Generic Classes)
list and here we call list
3:30
S…
Speaker 2 (4- Generic Classes)
.add.
3:31
S…
Speaker 2 (4- Generic Classes)
Let's pass an integer
3:35
S…
Speaker 1 (4- Generic Classes)
Now here's the second benefit.
3:37
S…
Speaker 1 (4- Generic Classes)
When we call the get method,
3:39
S…
Speaker 2 (4- Generic Classes)
look,
3:40
S…
Speaker 1 (4- Generic Classes)
we get an integer.
3:41
S…
Speaker 1 (4- Generic Classes)
So if we get the first item,
3:43
S…
Speaker 1 (4- Generic Classes)
we can simply store it in an integer,
3:46
S…
Speaker 1 (4- Generic Classes)
and here we don't need an explicit cast.
3:50
S…
Speaker 1 (4- Generic Classes)
If we had a generic list of users,
3:52
S…
Speaker 1 (4- Generic Classes)
we could add a user object here,
3:55
S…
Speaker 1 (4- Generic Classes)
and when reading the first item,
3:59
S…
Speaker 1 (4- Generic Classes)
we would store it in a user object.
4:01
S…
Speaker 2 (4- Generic Classes)
Okay,
4:03
S…
Speaker 1 (4- Generic Classes)
again, we don't need an explicit cast.
4:05
S…
Speaker 1 (4- Generic Classes)
So our code becomes cleaner and we get compile time type safety.
4:10
S…
Speaker 1 (4- Generic Classes)
So we can catch our mistakes at compile time rather than at runtime.
4:14
S…
Speaker 1 (4- Generic Classes)
That is the beauty of generics.
4:16
S…
Speaker 1 (4- Generic Classes)
Now over the next few videos,
4:17
S…
Speaker 1 (4- Generic Classes)
we're going to study generics in more detail.
4:19
S…
Speaker 1 (4- Generic Classes)
You're going to understand how exactly generics work under the hood.
4:23
S…
Speaker 1 (4- Generic Classes)
So I will see you in the next video.
Transkript sa a te kreye pa AI (rekonosman vwa otomatik). Li ka gen erè — tcheke ak son orijinal la pou itilize kritik. Politik AI
Resume
Klike sou Remak pou kreye yon remak AI de transkript sa a.
Enstale...
Konbyen tan pou m' fè transkript la?
Mande nenpòt bagay sou transkript sa a - AI a pral jwenn seksyon ki enpòtan yo epi reponn.