Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
Y
yzg-util
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
YZG
yzg-util
Commits
13831a3a
Commit
13831a3a
authored
May 18, 2022
by
yanzg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
将源码打包进jar包
parent
277352c0
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
366 additions
and
90 deletions
+366
-90
PlanLevel.java
...-redis/src/main/java/com.yanzuoguang.redis/PlanLevel.java
+18
-0
PlanLevelNamespace.java
...c/main/java/com.yanzuoguang.redis/PlanLevelNamespace.java
+16
-0
PlanLevelNamespaceDefault.java
...java/com.yanzuoguang.redis/PlanLevelNamespaceDefault.java
+9
-0
PlanGlobalDefault.java
...ain/java/com.yanzuoguang.redis/def/PlanGlobalDefault.java
+0
-15
PlanLevelDefault.java
...main/java/com.yanzuoguang.redis/def/PlanLevelDefault.java
+16
-0
PlanLevelNamespaceApplication.java
...anzuoguang.redis/level/PlanLevelNamespaceApplication.java
+28
-0
PlanLevelNamespaceGlobal.java
...com.yanzuoguang.redis/level/PlanLevelNamespaceGlobal.java
+24
-0
PlanLevelNamespaceProgram.java
...om.yanzuoguang.redis/level/PlanLevelNamespaceProgram.java
+27
-0
PlanLevelNamespaceServerIp.java
...m.yanzuoguang.redis/level/PlanLevelNamespaceServerIp.java
+24
-0
PlanConsumer.java
.../src/main/java/com.yanzuoguang.redis/mq/PlanConsumer.java
+1
-2
PlanProcedure.java
...src/main/java/com.yanzuoguang.redis/mq/PlanProcedure.java
+32
-22
PlanRegister.java
...main/java/com.yanzuoguang.redis/service/PlanRegister.java
+72
-32
PlanService.java
.../main/java/com.yanzuoguang.redis/service/PlanService.java
+5
-5
PlanConfigVo.java
.../src/main/java/com.yanzuoguang.redis/vo/PlanConfigVo.java
+24
-14
PlanLevelType.java
...src/main/java/com.yanzuoguang.redis/vo/PlanLevelType.java
+70
-0
No files found.
yzg-util-redis/src/main/java/com.yanzuoguang.redis/Plan
Globa
l.java
→
yzg-util-redis/src/main/java/com.yanzuoguang.redis/Plan
Leve
l.java
View file @
13831a3a
package
com
.
yanzuoguang
.
redis
;
import
com.yanzuoguang.redis.vo.PlanLevelType
;
/**
* 用于确定任务所属的级别
*
* @author 颜佐光
*/
public
interface
Plan
Globa
l
{
public
interface
Plan
Leve
l
{
/**
* 是否全局运行
* 1. 返回true表示全局运行,将采用plan_plan队列来执行,不实现本接口时默认为false
* 2. 返回false表示程序运行
* 获取任务程序级别
*
* @return
是否全局运行
* @return
应用程序级别
*/
boolean
isGloba
l
();
PlanLevelType
getLeve
l
();
}
yzg-util-redis/src/main/java/com.yanzuoguang.redis/PlanLevelNamespace.java
0 → 100644
View file @
13831a3a
package
com
.
yanzuoguang
.
redis
;
/**
* 获取应用程序级别
*
* @author 颜佐光
*/
public
interface
PlanLevelNamespace
extends
PlanLevel
{
/**
* 获取任务级别命名空间
*
* @return 任务级别关键字
*/
String
getLevelNamespace
();
}
yzg-util-redis/src/main/java/com.yanzuoguang.redis/PlanLevelNamespaceDefault.java
0 → 100644
View file @
13831a3a
package
com
.
yanzuoguang
.
redis
;
/**
* 获取应用程序级别
*
* @author 颜佐光
*/
public
interface
PlanLevelNamespaceDefault
extends
PlanLevelNamespace
{
}
yzg-util-redis/src/main/java/com.yanzuoguang.redis/def/PlanGlobalDefault.java
deleted
100644 → 0
View file @
277352c0
package
com
.
yanzuoguang
.
redis
.
def
;
import
com.yanzuoguang.redis.PlanGlobal
;
/**
* 默认非全局任务
*
* @author 颜佐光
*/
public
class
PlanGlobalDefault
implements
PlanGlobal
{
@Override
public
boolean
isGlobal
()
{
return
false
;
}
}
yzg-util-redis/src/main/java/com.yanzuoguang.redis/def/PlanLevelDefault.java
0 → 100644
View file @
13831a3a
package
com
.
yanzuoguang
.
redis
.
def
;
import
com.yanzuoguang.redis.PlanLevel
;
import
com.yanzuoguang.redis.vo.PlanLevelType
;
/**
* 默认Application应用程序级别
*
* @author 颜佐光
*/
public
class
PlanLevelDefault
implements
PlanLevel
{
@Override
public
PlanLevelType
getLevel
()
{
return
PlanLevelType
.
Application
;
}
}
yzg-util-redis/src/main/java/com.yanzuoguang.redis/level/PlanLevelNamespaceApplication.java
0 → 100644
View file @
13831a3a
package
com
.
yanzuoguang
.
redis
.
level
;
import
com.yanzuoguang.redis.PlanLevelNamespaceDefault
;
import
com.yanzuoguang.redis.vo.PlanLevelType
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
/**
* 应用程序级别
*
* @author 颜佐光
*/
@Component
public
class
PlanLevelNamespaceApplication
implements
PlanLevelNamespaceDefault
{
@Value
(
"${spring.application.name:}"
)
private
String
applicationName
;
@Override
public
String
getLevelNamespace
()
{
return
applicationName
;
}
@Override
public
PlanLevelType
getLevel
()
{
return
PlanLevelType
.
Application
;
}
}
yzg-util-redis/src/main/java/com.yanzuoguang.redis/level/PlanLevelNamespaceGlobal.java
0 → 100644
View file @
13831a3a
package
com
.
yanzuoguang
.
redis
.
level
;
import
com.yanzuoguang.redis.PlanLevelNamespaceDefault
;
import
com.yanzuoguang.redis.vo.PlanLevelType
;
import
com.yanzuoguang.util.contants.SystemContants
;
import
org.springframework.stereotype.Component
;
/**
* 全局级别
*
* @author 颜佐光
*/
@Component
public
class
PlanLevelNamespaceGlobal
implements
PlanLevelNamespaceDefault
{
@Override
public
String
getLevelNamespace
()
{
return
SystemContants
.
SYSTEM
;
}
@Override
public
PlanLevelType
getLevel
()
{
return
PlanLevelType
.
Global
;
}
}
yzg-util-redis/src/main/java/com.yanzuoguang.redis/level/PlanLevelNamespaceProgram.java
0 → 100644
View file @
13831a3a
package
com
.
yanzuoguang
.
redis
.
level
;
import
com.yanzuoguang.redis.PlanLevelNamespaceDefault
;
import
com.yanzuoguang.redis.vo.PlanLevelType
;
import
org.springframework.stereotype.Component
;
import
java.lang.management.ManagementFactory
;
import
java.lang.management.RuntimeMXBean
;
/**
* 程序级别
*
* @author 颜佐光
*/
@Component
public
class
PlanLevelNamespaceProgram
implements
PlanLevelNamespaceDefault
{
@Override
public
String
getLevelNamespace
()
{
RuntimeMXBean
runtimeMxBean
=
ManagementFactory
.
getRuntimeMXBean
();
return
runtimeMxBean
.
getName
();
}
@Override
public
PlanLevelType
getLevel
()
{
return
PlanLevelType
.
Program
;
}
}
yzg-util-redis/src/main/java/com.yanzuoguang.redis/level/PlanLevelNamespaceServerIp.java
0 → 100644
View file @
13831a3a
package
com
.
yanzuoguang
.
redis
.
level
;
import
com.yanzuoguang.redis.PlanLevelNamespaceDefault
;
import
com.yanzuoguang.redis.vo.PlanLevelType
;
import
com.yanzuoguang.util.helper.UrlHelper
;
import
org.springframework.stereotype.Component
;
/**
* 服务器Ip级别
*
* @author 颜佐光
*/
@Component
public
class
PlanLevelNamespaceServerIp
implements
PlanLevelNamespaceDefault
{
@Override
public
String
getLevelNamespace
()
{
return
UrlHelper
.
getIp
();
}
@Override
public
PlanLevelType
getLevel
()
{
return
PlanLevelType
.
ServerIp
;
}
}
yzg-util-redis/src/main/java/com.yanzuoguang.redis/mq/PlanConsumer.java
View file @
13831a3a
...
...
@@ -33,9 +33,8 @@ public class PlanConsumer implements InitializingBean {
@Override
public
void
afterPropertiesSet
()
{
planProcedure
.
initQueue
();
// 应用程序级的任务交给队列处理
mqService
.
setQueueConsumer
(
planProcedure
.
getApplicationPlanQueueName
(),
(
message
,
channel
)
->
planProcedure
.
initQueue
(
(
message
,
channel
)
->
PlanConsumer
.
this
.
plan
(
new
String
(
message
.
getBody
(),
StandardCharsets
.
UTF_8
),
message
,
channel
)
);
}
...
...
yzg-util-redis/src/main/java/com.yanzuoguang.redis/mq/PlanProcedure.java
View file @
13831a3a
...
...
@@ -5,12 +5,15 @@ import com.yanzuoguang.mq.vo.MessageVo;
import
com.yanzuoguang.mq.vo.QueueVo
;
import
com.yanzuoguang.redis.PlanContains
;
import
com.yanzuoguang.redis.PlanInfo
;
import
com.yanzuoguang.redis.
service.PlanRegister
;
import
com.yanzuoguang.redis.
PlanLevelNamespace
;
import
com.yanzuoguang.redis.vo.PlanConfigVo
;
import
com.yanzuoguang.util.helper.JsonHelper
;
import
com.yanzuoguang.util.helper.StringHelper
;
import
org.springframework.amqp.rabbit.core.ChannelAwareMessageListener
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
/**
* 订单消息队列
*
...
...
@@ -20,47 +23,54 @@ import org.springframework.stereotype.Component;
public
class
PlanProcedure
{
private
final
MqService
mqService
;
private
final
PlanRegister
planRegister
;
private
final
List
<
PlanLevelNamespace
>
planLevelNamespaceList
;
public
PlanProcedure
(
MqService
mqService
,
PlanRegister
planRegister
)
{
public
PlanProcedure
(
MqService
mqService
,
List
<
PlanLevelNamespace
>
planLevelNamespaceList
)
{
this
.
mqService
=
mqService
;
this
.
plan
Register
=
planRegister
;
this
.
plan
LevelNamespaceList
=
planLevelNamespaceList
;
}
public
void
initQueue
()
{
public
void
initQueue
(
ChannelAwareMessageListener
messageListener
)
{
// 库存任务
mqService
.
createQueue
(
new
QueueVo
(
PlanContains
.
YZG_PLAN_PLAN
));
mqService
.
createQueue
(
new
QueueVo
(
this
.
getApplicationPlanQueueName
()));
planLevelNamespaceList
.
forEach
(
k
->
{
String
queueName
=
getQueueName
(
k
);
// 创建队列,注册回调
mqService
.
createQueue
(
new
QueueVo
(
queueName
));
// 应用程序级的任务交给队列处理
mqService
.
setQueueConsumer
(
queueName
,
messageListener
);
});
}
/**
*
应用程序级队列名称
*
执行库存任务
*
* @
return 应用程序级别队列名称
* @
param req 待执行的任务
*/
public
String
getApplicationPlanQueueName
(
)
{
return
StringHelper
.
getId
(
PlanContains
.
YZG_PLAN_PLAN
,
planRegister
.
getApplicationName
(
));
public
void
plan
(
PlanConfigVo
config
,
PlanInfo
<?>
req
)
{
plan
(
config
,
JsonHelper
.
serialize
(
req
));
}
/**
* 执行库存任务
*
* @param
req 待
执行的任务
* @param
json
执行的任务
*/
public
void
plan
(
PlanConfigVo
planConfigVo
,
PlanInfo
<?>
req
)
{
plan
(
planConfigVo
,
JsonHelper
.
serialize
(
req
));
private
void
plan
(
PlanConfigVo
config
,
String
json
)
{
String
queueName
=
getQueueName
(
config
.
getPlanLevelNamespace
());
mqService
.
message
(
new
MessageVo
(
queueName
,
json
,
0
));
}
/**
*
执行库存任务
*
获取队列名称
*
* @param json 执行的任务
* @param planLevelNamespace 命名空间
* @return 队列名称
*/
private
void
plan
(
PlanConfigVo
planConfigVo
,
String
json
)
{
if
(
planConfigVo
.
getPlanGlobal
().
isGlobal
())
{
mqService
.
message
(
new
MessageVo
(
PlanContains
.
YZG_PLAN_PLAN
,
json
,
0
));
}
else
{
mqService
.
message
(
new
MessageVo
(
this
.
getApplicationPlanQueueName
(),
json
,
0
));
}
private
String
getQueueName
(
PlanLevelNamespace
planLevelNamespace
)
{
return
StringHelper
.
getId
(
PlanContains
.
YZG_PLAN_PLAN
,
planLevelNamespace
.
getLevel
().
getName
(),
planLevelNamespace
.
getLevelNamespace
()
);
}
}
yzg-util-redis/src/main/java/com.yanzuoguang.redis/service/PlanRegister.java
View file @
13831a3a
package
com
.
yanzuoguang
.
redis
.
service
;
import
com.yanzuoguang.redis.Plan
;
import
com.yanzuoguang.redis.PlanGlobal
;
import
com.yanzuoguang.redis.PlanName
;
import
com.yanzuoguang.redis.PlanStart
;
import
com.yanzuoguang.redis.def.PlanGlobalDefault
;
import
com.yanzuoguang.redis.*
;
import
com.yanzuoguang.redis.def.PlanLevelDefault
;
import
com.yanzuoguang.redis.def.PlanNameDefault
;
import
com.yanzuoguang.redis.def.PlanStartDefault
;
import
com.yanzuoguang.redis.vo.PlanConfigVo
;
import
org.springframework.beans.factory.annotation.Value
;
import
com.yanzuoguang.redis.vo.PlanLevelType
;
import
com.yanzuoguang.util.log.Log
;
import
org.springframework.stereotype.Component
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.*
;
/**
* 任务工具类
...
...
@@ -31,13 +26,12 @@ public class PlanRegister {
* 任务默认值
*/
private
final
PlanStartDefault
planStartDefault
=
new
PlanStartDefault
();
private
final
PlanGlobalDefault
planGlobalDefault
=
new
PlanGlobalDefault
();
private
final
PlanLevelDefault
planLevelDefault
=
new
PlanLevelDefault
();
private
final
Map
<
PlanLevelType
,
PlanLevelNamespaceDefault
>
mapLevelTypeNamespaceDefault
=
new
HashMap
<>();
@Value
(
"${spring.application.name:}"
)
private
String
applicationName
;
public
PlanRegister
(
Optional
<
List
<
Plan
>>
plans
)
{
public
PlanRegister
(
Optional
<
List
<
Plan
>>
plans
,
List
<
PlanLevelNamespaceDefault
>
planLevelNamespaceDefaults
)
{
plans
.
ifPresent
(
planList
->
planList
.
forEach
(
this
::
register
));
planLevelNamespaceDefaults
.
forEach
(
k
->
mapLevelTypeNamespaceDefault
.
put
(
k
.
getLevel
(),
k
));
}
/**
...
...
@@ -49,15 +43,6 @@ public class PlanRegister {
return
mapPlan
;
}
/**
* 应用程序名称
*
* @return 应用程序名称
*/
public
String
getApplicationName
()
{
return
applicationName
;
}
/**
* 获取执行任务
*
...
...
@@ -77,28 +62,83 @@ public class PlanRegister {
if
(
plan
==
null
)
{
return
;
}
PlanLevel
planLevel
=
getPlanLevel
(
plan
);
PlanLevelNamespace
planLevelNamespace
=
getPlanLevelNamespace
(
plan
,
planLevel
);
if
(
planLevelNamespace
==
null
)
{
return
;
}
PlanStart
planStart
=
getPlanStart
(
plan
);
PlanName
planName
=
getPlanName
(
plan
);
// 任务配置信息
PlanConfigVo
planConfigVo
=
new
PlanConfigVo
(
plan
,
planName
,
planStart
,
planLevel
,
planLevelNamespace
);
// 任务配置
mapPlan
.
put
(
planName
.
getPlanKey
(),
planConfigVo
);
}
/**
* 任务在应用程序打开时是否运行
*
* @param plan 任务
* @return 任务在应用程序打开时是否运行的配置
*/
private
PlanStart
getPlanStart
(
Plan
plan
)
{
PlanStart
planStart
;
if
(
plan
instanceof
PlanStart
)
{
planStart
=
(
PlanStart
)
plan
;
}
else
{
planStart
=
planStartDefault
;
}
PlanGlobal
planGlobal
;
if
(
plan
instanceof
PlanGlobal
)
{
planGlobal
=
(
PlanGlobal
)
plan
;
return
planStart
;
}
/**
* 获取任务的级别
*
* @param plan 任务
* @return 任务级别
*/
private
PlanLevel
getPlanLevel
(
Plan
plan
)
{
PlanLevel
planLevel
;
if
(
plan
instanceof
PlanLevel
)
{
planLevel
=
(
PlanLevel
)
plan
;
}
else
{
planGlobal
=
planGlobalDefault
;
planLevel
=
planLevelDefault
;
}
return
planLevel
;
}
/**
* 获取任务名称
*
* @param plan 任务
* @return 任务名称
*/
private
PlanName
getPlanName
(
Plan
plan
)
{
PlanName
planName
;
if
(
plan
instanceof
PlanName
)
{
planName
=
(
PlanName
)
plan
;
}
else
{
planName
=
new
PlanNameDefault
(
plan
.
getClass
());
}
// 任务配置信息
PlanConfigVo
planConfigVo
=
new
PlanConfigVo
(
plan
,
planName
,
planGlobal
,
planStart
);
// 任务配置
mapPlan
.
put
(
planName
.
getPlanKey
(),
planConfigVo
);
return
planName
;
}
/**
* 获取应用名称
*
* @param plan 任务
* @param planLevel 任务程序级别
* @return 任务程序级别名称
*/
private
PlanLevelNamespace
getPlanLevelNamespace
(
Plan
plan
,
PlanLevel
planLevel
)
{
if
(
plan
instanceof
PlanLevelNamespace
)
{
return
(
PlanLevelNamespace
)
plan
;
}
PlanLevelNamespace
defaultLevelNamespace
=
mapLevelTypeNamespaceDefault
.
get
(
planLevel
.
getLevel
());
if
(
defaultLevelNamespace
!=
null
)
{
return
defaultLevelNamespace
;
}
Log
.
error
(
plan
.
getClass
(),
"没有实现 PlanLevelNamespace 接口,或者没有默认级别处理程序"
);
return
null
;
}
}
yzg-util-redis/src/main/java/com.yanzuoguang.redis/service/PlanService.java
View file @
13831a3a
...
...
@@ -5,8 +5,10 @@ import com.alicp.jetcache.anno.CacheType;
import
com.alicp.jetcache.anno.CreateCache
;
import
com.yanzuoguang.redis.PlanContains
;
import
com.yanzuoguang.redis.PlanInfo
;
import
com.yanzuoguang.redis.PlanLevelNamespace
;
import
com.yanzuoguang.redis.mq.PlanProcedure
;
import
com.yanzuoguang.redis.vo.PlanConfigVo
;
import
com.yanzuoguang.redis.vo.PlanLevelType
;
import
com.yanzuoguang.util.helper.StringHelper
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
...
...
@@ -141,10 +143,8 @@ public class PlanService {
* @return 任务关键字
*/
private
String
getCacheKey
(
PlanConfigVo
config
,
String
key
)
{
if
(
config
.
getPlanGlobal
().
isGlobal
())
{
return
StringHelper
.
getId
(
key
);
}
else
{
return
StringHelper
.
getId
(
planRegister
.
getApplicationName
(),
key
);
}
PlanLevelNamespace
planLevelNamespace
=
config
.
getPlanLevelNamespace
();
PlanLevelType
level
=
planLevelNamespace
.
getLevel
();
return
StringHelper
.
getId
(
level
.
getName
(),
planLevelNamespace
.
getLevelNamespace
(),
key
);
}
}
yzg-util-redis/src/main/java/com.yanzuoguang.redis/vo/PlanConfigVo.java
View file @
13831a3a
package
com
.
yanzuoguang
.
redis
.
vo
;
import
com.yanzuoguang.redis.Plan
;
import
com.yanzuoguang.redis.PlanGlobal
;
import
com.yanzuoguang.redis.PlanName
;
import
com.yanzuoguang.redis.PlanStart
;
import
com.yanzuoguang.redis.*
;
/**
* 任务配置
...
...
@@ -19,20 +16,29 @@ public class PlanConfigVo {
* 任务名称
*/
private
final
PlanName
planName
;
/**
* 是否全局运行
*/
private
final
PlanGlobal
planGlobal
;
/**
* 是否立即运行
*/
private
final
PlanStart
planStart
;
/**
* 应用程序级别
*/
private
final
PlanLevel
planLevel
;
/**
* 应用程序级别命名空间
*/
private
final
PlanLevelNamespace
planLevelNamespace
;
public
PlanConfigVo
(
Plan
plan
,
PlanName
planName
,
PlanGlobal
planGlobal
,
PlanStart
planStart
)
{
public
PlanConfigVo
(
Plan
plan
,
PlanName
planName
,
PlanStart
planStart
,
PlanLevel
planLevel
,
PlanLevelNamespace
planLevelNamespace
)
{
this
.
plan
=
plan
;
this
.
planName
=
planName
;
this
.
plan
Global
=
planGloba
l
;
this
.
plan
Level
=
planLeve
l
;
this
.
planStart
=
planStart
;
this
.
planLevelNamespace
=
planLevelNamespace
;
}
public
Plan
getPlan
()
{
...
...
@@ -43,11 +49,15 @@ public class PlanConfigVo {
return
planName
;
}
public
PlanGlobal
getPlanGlobal
()
{
return
planGlobal
;
}
public
PlanStart
getPlanStart
()
{
return
planStart
;
}
public
PlanLevel
getPlanLevel
()
{
return
planLevel
;
}
public
PlanLevelNamespace
getPlanLevelNamespace
()
{
return
planLevelNamespace
;
}
}
yzg-util-redis/src/main/java/com.yanzuoguang.redis/vo/PlanLevelType.java
0 → 100644
View file @
13831a3a
package
com
.
yanzuoguang
.
redis
.
vo
;
/**
* 任务级别
*
* @author 颜佐光
*/
public
enum
PlanLevelType
{
/**
* SpringCloud全局级别
*/
Global
(
"Global"
,
0
),
/**
* SpringBoot同Application.Name 级别
*/
Application
(
"Application"
,
1
),
/**
* 同一个程序级别
*/
ServerIp
(
"ServerIp"
,
2
),
/**
* 同一个程序级别
*/
Program
(
"Program"
,
3
),
/**
* 自定义级别,
* 自定义需要任务实现 PlanLevelNamespace 接口,
* 或者自己全局定义实现 PlanLevelNamespaceDefault 接口;
* 当没有实现的时候,该任务会错误提示并且将不会运行
*/
Define
(
"Define"
,
4
);
/**
* Id
*/
private
int
id
;
/**
* 成员变量
*/
private
String
name
;
/**
* 构造方法
*
* @param name 名称
* @param id id
*/
private
PlanLevelType
(
String
name
,
int
id
)
{
this
.
name
=
name
;
this
.
id
=
id
;
}
public
int
getId
()
{
return
id
;
}
public
String
getName
()
{
return
name
;
}
/**
* 覆盖方法
*
* @return 获取名称
*/
@Override
public
String
toString
()
{
return
this
.
id
+
"-"
+
this
.
name
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment