一个日牯子
Home
Tags
GitHub
Author
2017-12-21
SVG
HTML
PDF
B
o
u
n
d
e
d
G
e
n
e
r
i
c
s
1
关
于
J
a
v
a
泛
型
编
程
语
言
闲
话
编
程
C
o
n
t
e
n
t
s
B
o
u
n
d
e
d
G
e
n
e
r
i
c
s
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
T
y
p
e
e
r
a
s
e
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
Q
&
A
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
泛
型
是
之
后
一
个
比
较
有
用
的
特
性
,
有
点
类
似
于
的
模
板
。
最
简
单
的
一
个
例
子
:
c
l
a
s
s
W
r
a
p
p
e
r
<
T
>
{
f
i
n
a
l
T
d
a
t
a
;
W
r
a
p
p
e
r
(
T
d
a
t
a
)
{
t
h
i
s
.
d
a
t
a
=
d
a
t
a
;
}
}
有
一
些
可
能
不
是
特
别
常
用
的
,
我
们
来
简
单
看
一
下
。
B
o
u
n
d
e
d
G
e
n
e
r
i
c
s
M
u
l
t
i
p
l
e
b
o
u
n
d
如
果
一
个
类
继
承
了
多
个
接
口
,
是
这
样
的
写
法
:
i
n
t
e
r
f
a
c
e
I
{
}
i
n
t
e
r
f
a
c
e
M
{
}
a
b
s
t
r
a
c
t
c
l
a
s
s
C
{
}
c
l
a
s
s
F
o
o
e
x
t
e
n
d
s
C
i
m
p
l
e
m
e
n
t
s
I
,
M
{
}
假
如
一
个
方
法
的
泛
型
参
数
包
含
多
个
,
则
要
这
样
写
了
:
<
T
e
x
t
e
n
d
s
I
&
M
>
v
o
i
d
b
a
r
(
T
a
r
g
)
{
}
<
T
e
x
t
e
n
d
s
C
>
v
o
i
d
o
o
o
(
T
a
r
g
)
{
}
<
T
e
x
t
e
n
d
s
C
&
I
&
M
>
v
o
i
d
x
x
x
(
T
a
r
g
)
{
}
U
n
b
o
u
n
d
e
d
w
i
l
d
c
a
r
d
s
使
用
修
饰
符
可
以
用
作
类
型
转
换
,
意
味
着
是
一
个
未
知
类
型
的
,
可
能
是
L
i
s
t
<
A
>
也
可
能
是
L
i
s
t
<
B
>
p
r
i
v
a
t
e
f
i
n
a
l
L
i
s
t
<
S
t
r
i
n
g
>
s
t
r
L
i
s
t
=
A
r
r
a
y
s
.
a
s
L
i
s
t
(
"
H
e
l
l
o
"
,
"
W
o
r
l
d
!
"
)
;
p
r
i
v
a
t
e
f
i
n
a
l
L
i
s
t
<
I
n
t
e
g
e
r
>
i
n
t
L
i
s
t
=
A
r
r
a
y
s
.
a
s
L
i
s
t
(
1
,
2
,
3
)
;
p
r
i
v
a
t
e
f
i
n
a
l
L
i
s
t
<
F
l
o
a
t
>
f
l
o
a
t
L
i
s
t
=
A
r
r
a
y
s
.
a
s
L
i
s
t
(
1
.
1
f
,
2
.
1
f
,
3
.
1
f
)
;
p
r
i
v
a
t
e
f
i
n
a
l
L
i
s
t
<
N
u
m
b
e
r
>
n
u
m
b
e
r
L
i
s
t
=
A
r
r
a
y
s
.
a
s
L
i
s
t
(
1
,
1
.
0
f
,
3
0
0
0
L
)
;
T
y
p
e
e
r
a
s
e
2
p
u
b
l
i
c
v
o
i
d
c
a
s
t
(
)
{
L
i
s
t
<
?
>
u
n
k
n
o
w
n
L
i
s
t
=
n
u
l
l
;
u
n
k
n
o
w
n
L
i
s
t
=
s
t
r
L
i
s
t
;
u
n
k
n
o
w
n
L
i
s
t
=
i
n
t
L
i
s
t
;
u
n
k
n
o
w
n
L
i
s
t
=
f
l
o
a
t
L
i
s
t
;
u
n
k
n
o
w
n
L
i
s
t
=
n
u
m
b
e
r
L
i
s
t
;
f
o
r
(
i
n
t
i
=
0
;
i
<
u
n
k
n
o
w
n
L
i
s
t
.
s
i
z
e
(
)
;
i
+
+
)
{
/
/
N
u
m
b
e
r
i
t
e
m
=
u
n
k
n
o
w
n
L
i
s
t
.
g
e
t
(
i
)
;
w
r
o
n
g
!
O
b
j
e
c
t
i
t
e
m
=
u
n
k
n
o
w
n
L
i
s
t
.
g
e
t
(
i
)
;
S
y
s
t
e
m
.
o
u
t
.
p
r
i
n
t
l
n
(
i
t
e
m
+
"
(
"
+
i
t
e
m
.
g
e
t
C
l
a
s
s
(
)
+
"
)
"
)
;
}
}
/
*
o
u
t
p
u
t
1
(
c
l
a
s
s
j
a
v
a
.
l
a
n
g
.
I
n
t
e
g
e
r
)
1
.
0
(
c
l
a
s
s
j
a
v
a
.
l
a
n
g
.
F
l
o
a
t
)
3
0
0
0
(
c
l
a
s
s
j
a
v
a
.
l
a
n
g
.
L
o
n
g
)
*
/
U
p
p
e
r
b
o
u
n
d
e
d
w
i
l
d
c
a
r
d
s
p
u
b
l
i
c
s
t
a
t
i
c
d
o
u
b
l
e
s
u
m
O
f
L
i
s
t
(
L
i
s
t
<
?
e
x
t
e
n
d
s
N
u
m
b
e
r
>
l
i
s
t
)
{
d
o
u
b
l
e
s
=
0
.
0
;
f
o
r
(
N
u
m
b
e
r
n
:
l
i
s
t
)
s
+
=
n
.
d
o
u
b
l
e
V
a
l
u
e
(
)
;
r
e
t
u
r
n
s
;
}
/
/
.
.
.
s
u
m
O
f
L
i
s
t
(
A
r
r
a
y
s
.
a
s
L
i
s
t
(
1
,
2
,
3
)
)
;
s
u
m
O
f
L
i
s
t
(
A
r
r
a
y
s
.
a
s
L
i
s
t
(
1
.
0
f
,
2
.
0
f
,
3
.
0
f
)
)
;
L
o
w
e
r
b
o
u
n
d
e
d
w
i
l
d
c
a
r
d
s
p
u
b
l
i
c
s
t
a
t
i
c
v
o
i
d
a
d
d
N
u
m
b
e
r
s
(
L
i
s
t
<
?
s
u
p
e
r
N
u
m
b
e
r
>
l
i
s
t
)
{
f
o
r
(
i
n
t
i
=
1
;
i
<
=
1
0
;
i
+
+
)
{
l
i
s
t
.
a
d
d
(
i
)
;
l
i
s
t
.
a
d
d
(
1
.
0
f
)
;
}
}
a
d
d
N
u
m
b
e
r
s
(
n
e
w
A
r
r
a
y
L
i
s
t
<
N
u
m
b
e
r
>
(
)
)
;
T
y
p
e
e
r
a
s
e
T
y
p
e
e
r
a
s
e
p
r
o
c
e
s
s
的
泛
型
是
编
译
时
有
效
的
,
在
运
行
时
,
所
有
泛
型
参
数
会
被
编
译
器
擦
除
。
擦
除
的
规
则
如
下
:
如
果
参
数
是
有
的
,
则
会
替
换
成
这
个
如
果
是
,
则
会
替
换
成
如
下
所
示
:
T
y
p
e
e
r
a
s
e
3
p
u
b
l
i
c
c
l
a
s
s
N
o
d
e
<
T
>
{
/
/
p
u
b
l
i
c
c
l
a
s
s
N
o
d
e
{
p
r
i
v
a
t
e
T
d
a
t
a
;
/
/
p
r
i
v
a
t
e
O
b
j
e
c
t
d
a
t
a
;
p
r
i
v
a
t
e
N
o
d
e
<
T
>
n
e
x
t
;
/
/
p
r
i
v
a
t
e
N
o
d
e
n
e
x
t
;
p
u
b
l
i
c
N
o
d
e
(
T
d
a
t
a
,
N
o
d
e
<
T
>
n
e
x
t
)
{
/
/
p
u
b
l
i
c
N
o
d
e
(
O
b
j
e
c
t
d
a
t
a
,
N
o
d
e
n
e
x
t
)
{
t
h
i
s
d
a
t
a
=
d
a
t
a
;
/
/
t
h
i
s
d
a
t
a
=
d
a
t
a
;
t
h
i
s
n
e
x
t
=
n
e
x
t
;
/
/
t
h
i
s
n
e
x
t
=
n
e
x
t
;
}
/
/
}
/
/
p
u
b
l
i
c
T
g
e
t
D
a
t
a
(
)
{
r
e
t
u
r
n
d
a
t
a
;
}
/
/
p
u
b
l
i
c
O
b
j
e
c
t
g
e
t
D
a
t
a
(
)
{
r
e
t
u
r
n
d
a
t
a
;
}
}
/
/
}
p
u
b
l
i
c
c
l
a
s
s
N
o
d
e
<
T
e
x
t
e
n
d
s
C
o
m
p
a
r
a
b
l
e
<
T
>
>
{
/
/
p
u
b
l
i
c
c
l
a
s
s
N
o
d
e
{
p
r
i
v
a
t
e
T
d
a
t
a
;
/
/
p
r
i
v
a
t
e
C
o
m
p
a
r
a
b
l
e
d
a
t
a
;
p
r
i
v
a
t
e
N
o
d
e
<
T
>
n
e
x
t
;
/
/
p
r
i
v
a
t
e
N
o
d
e
n
e
x
t
;
p
u
b
l
i
c
N
o
d
e
(
T
d
a
t
a
,
N
o
d
e
<
T
>
n
e
x
t
)
{
/
/
p
u
b
l
i
c
N
o
d
e
(
C
o
m
p
a
r
a
b
l
e
d
a
t
a
,
N
o
d
e
n
e
x
t
)
{
t
h
i
s
.
d
a
t
a
=
d
a
t
a
;
/
/
t
h
i
s
.
d
a
t
a
=
d
a
t
a
;
t
h
i
s
.
n
e
x
t
=
n
e
x
t
;
/
/
t
h
i
s
.
n
e
x
t
=
n
e
x
t
;
}
/
/
}
/
/
p
u
b
l
i
c
T
g
e
t
D
a
t
a
(
)
{
r
e
t
u
r
n
d
a
t
a
;
}
/
/
p
u
b
l
i
c
C
o
m
p
a
r
a
b
l
e
g
e
t
D
a
t
a
(
)
{
r
e
t
u
r
n
d
a
t
a
;
}
}
/
/
}
B
r
i
d
g
e
m
e
t
h
o
d
按
照
上
面
的
擦
除
也
会
带
来
问
题
。
考
虑
下
面
的
例
子
,
如
果
有
一
个
子
类
:
p
u
b
l
i
c
c
l
a
s
s
M
y
N
o
d
e
e
x
t
e
n
d
s
N
o
d
e
<
I
n
t
e
g
e
r
>
{
/
/
p
u
b
l
i
c
c
l
a
s
s
M
y
N
o
d
e
e
x
t
e
n
d
s
N
o
d
e
{
p
u
b
l
i
c
M
y
N
o
d
e
(
I
n
t
e
g
e
r
d
a
t
a
)
{
s
u
p
e
r
(
d
a
t
a
)
;
}
/
/
p
u
b
l
i
c
M
y
N
o
d
e
(
I
n
t
e
g
e
r
d
a
t
a
)
{
s
u
p
e
r
(
d
a
t
a
)
;
}
/
/
p
u
b
l
i
c
v
o
i
d
s
e
t
D
a
t
a
(
I
n
t
e
g
e
r
d
a
t
a
)
{
/
/
p
u
b
l
i
c
v
o
i
d
s
e
t
D
a
t
a
(
I
n
t
e
g
e
r
d
a
t
a
)
{
S
y
s
t
e
m
.
o
u
t
.
p
r
i
n
t
l
n
(
"
M
y
N
o
d
e
.
s
e
t
D
a
t
a
"
)
;
/
/
S
y
s
t
e
m
.
o
u
t
.
p
r
i
n
t
l
n
(
"
M
y
N
o
d
e
.
s
e
t
D
a
t
a
"
)
;
s
u
p
e
r
.
s
e
t
D
a
t
a
(
d
a
t
a
)
;
/
/
s
u
p
e
r
.
s
e
t
D
a
t
a
(
d
a
t
a
)
;
}
/
/
}
}
/
/
}
然
后
,
我
们
考
虑
如
下
的
代
码
:
M
y
N
o
d
e
m
n
=
n
e
w
M
y
N
o
d
e
(
5
)
;
/
/
M
y
N
o
d
e
m
n
=
n
e
w
M
y
N
o
d
e
(
5
)
;
Q
&
A
4
N
o
d
e
n
=
m
n
;
/
/
N
o
d
e
n
=
(
M
y
N
o
d
e
)
m
n
;
n
.
s
e
t
D
a
t
a
(
"
H
e
l
l
o
"
)
;
/
/
n
.
s
e
t
D
a
t
a
(
"
H
e
l
l
o
"
)
;
I
n
t
e
g
e
r
x
=
m
n
.
d
a
t
a
;
/
/
I
n
t
e
g
e
r
x
=
(
S
t
r
i
n
g
)
m
n
.
d
a
t
a
;
这
里
调
用
则
会
参
数
类
型
不
能
匹
配
。
为
了
解
决
这
个
问
题
,
编
译
器
会
生
成
一
个
p
u
b
l
i
c
v
o
i
d
s
e
t
D
a
t
a
(
O
b
j
e
c
t
d
a
t
a
)
{
s
e
t
D
a
t
a
(
(
I
n
t
e
g
e
r
)
d
a
t
a
)
;
}
Q
&
A
L
i
s
t
<
?
>
v
s
L
i
s
t
<
O
b
j
e
c
t
>
e
x
t
e
n
d
s
v
s
s
u
p
e
r
实
际
上
泛
型
仅
仅
是
为
了
做
一
个
编
译
时
的
检
查
,
从
逻
辑
上
确
保
程
序
是
类
型
安
全
的
。
假
设
我
们
有
这
样
的
类
定
义
:
我
们
有
这
样
几
种
写
法
:
L
i
s
t
<
?
>
代
表
一
种
未
知
类
型
的
,
可
能
是
L
i
s
t
<
O
b
j
e
c
t
>
,
也
可
能
是
L
i
s
t
<
C
h
i
l
d
>
,
都
可
以
L
i
s
t
<
?
e
x
t
e
n
d
s
T
>
代
表
或
者
的
子
类
的
,
可
以
是
L
i
s
t
<
T
>
,
也
可
以
是
L
i
s
t
<
C
h
i
l
d
>
L
i
s
t
<
?
s
u
p
e
r
T
>
代
表
或
者
的
父
类
的
,
可
以
是
L
i
s
t
<
T
>
,
L
i
s
t
<
P
a
r
e
n
t
>
,
L
i
s
t
<
O
b
j
e
c
t
>
我
们
有
一
个
事
实
就
是
,
是
一
定
可
以
转
化
或
者
的
,
但
是
一
个
不
一
定
能
转
化
成
,
因
为
可
能
会
是
别
的
子
类
。
比
如
我
们
现
在
做
两
个
列
表
的
拷
贝
,
p
u
b
l
i
c
s
t
a
t
i
c
<
T
>
v
o
i
d
c
o
p
y
(
L
i
s
t
d
e
s
t
,
L
i
s
t
s
r
c
)
想
实
现
从
一
个
列
表
拷
贝
到
另
一
个
列
表
,
比
如
L
i
s
t
<
P
a
r
e
n
t
>
p
a
r
e
n
t
s
;
L
i
s
t
<
T
>
t
s
;
L
i
s
t
<
C
h
i
l
d
>
c
h
i
l
d
s
;
基
于
上
面
说
的
类
的
继
承
的
事
实
,
显
然
是
可
以
转
化
成
的
,
但
是
无
法
确
保
能
转
化
成
。
因
此
我
们
的
拷
贝
方
法
要
这
样
定
义
:
p
u
b
l
i
c
c
l
a
s
s
C
o
l
l
e
c
t
i
o
n
s
{
p
u
b
l
i
c
s
t
a
t
i
c
<
T
>
v
o
i
d
c
o
p
y
(
L
i
s
t
<
?
s
u
p
e
r
T
>
d
e
s
t
,
L
i
s
t
<
?
e
x
t
e
n
d
s
T
>
s
r
c
)
{
/
/
u
s
e
s
b
o
u
n
d
e
d
w
i
l
d
c
a
r
d
s
f
o
r
(
i
n
t
i
=
0
;
i
<
s
r
c
.
s
i
z
e
(
)
;
i
+
+
)
d
e
s
t
.
s
e
t
(
i
,
s
r
c
.
g
e
t
(
i
)
)
;
}
}
Q
&
A
5
因
为
在
方
法
中
,
需
要
的
是
一
个
能
够
转
化
为
的
对
象
的
,
中
保
证
了
中
的
元
素
一
定
是
一
个
。
HTML view coming soon.
Download PDF
for the full formatted version.