4- Generic Classes
Jun 20, 2026 05:17
· 4:27
· English
· Whisper Turbo
· 3 speakers
Цей трансферт застаріє в 24 Днів.
Оновлення для постійного зберігання →
Тільки показувати
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.
This transcript was generated by AI (automatic speech recognition). May contain errors — verify against the original audio for critical use. AI policy
Зведення
Натисніть Summarize, щоб створити резюме AI з цього запису.
Сума...
Запитати комп' ютерного гравця про цей маршрутний індекс
Спитайте що-небудь про цей трансляція ⇩AI знайде відповідні частини і відповідь.