该用户从未签到
|
直接给例子吧!例子中将讲解 1.权限表示 2.权限判断 3.添加权限 4.取消权限. Q. Y& Q6 p. c8 b6 B
- public class Test {
; x1 Y3 K( }% N7 k6 B3 P5 D - ! t: I9 U* [. |* i/ n! l
- /**
8 ~) M0 s! Z- j - * @param args
% Q5 X' f3 }. {- R C - */! e0 z; O3 G" @+ o
- public static void main(String[] args) {. }8 ~9 @$ K, F7 `# e. P9 o
- : x: H9 M0 s- X+ v4 ^
- /**
9 W7 N$ d4 [: d; ]2 k - * 四种权限 ,当前定义为int,以下二进制表示只取后四位作说明
5 F$ q: O% l, k% \. M" h; h - */
8 C7 n b, C2 c+ c. R - 4 ~9 K* E f- T1 d# V- Z
- // 添加: u/ j1 [! ?6 x5 s
- int c = 1;// ...0001
% R ^( D5 h0 ]0 P5 h! x8 F3 u _ - // 查询+ |0 |% s0 N/ w! E# k2 x
- int r = 2;// ...0010* g8 B7 ]% M: r$ J
- // 修改5 g, N$ H3 O$ g3 U3 F3 t W$ ]' j$ @
- int u = 4;// ...0100
/ r* g: ?) [' j! e k) c$ H: k4 m2 D) l - // 删除
5 }$ s: H f, n1 @! H1 X7 c# w - int d = 8;// ...10008 Y2 P' ^/ V8 t& X ~% B
9 W7 J* i# h4 Y4 v0 D1 a& c/ S5 V- /**
2 f$ r3 \! L7 C# f - * 1 C' U6 J# d/ l' f5 Z4 O: a: K
- * 大家可以观察四种权限的二进制表示的规律 ,都是2的N次方,. t6 a d- x% _2 q i P( ~) F: w
- * 就表示本身,添加权限有最后一位为其它为0,查询倒数第二位为1其它都为0,修改倒数第三个为1其它都为0,删除倒数第四个为1其它都为0
m+ I) I% ~3 R# O' ^) E0 Q - * $ r1 j4 n% w' L5 i
- */
& s( m& B8 m2 `8 s
0 t, k7 J# j6 ^" o* v1 I" p0 S7 `4 i- /**: S% T. I0 g" l/ s/ a
- *1111---- 这样表示有哪种权限时可以用 |(按位或) 操作
2 L% x$ Q$ H4 Q! ]+ T1 T - * & y4 r- X( R9 g# E# R
- */
9 ~( y5 n7 j. S5 `
' o- H# c4 T4 p* U/ m) `/ v* a, x: }- // 用户A有添加和修改权限1 t" _ ?% B9 n2 }
- int usera = c | r | u;: b6 h# T# z% y, u( _4 y! R
' j+ G4 {- w% t; u- // 用户B有添加和删除权限. C+ a5 `+ ~7 m: n7 `/ w
- int userb = c | d;
% V! y) L: ^1 X0 I' Q) h( F& T - ' w( @. ]) ~! @4 r/ {8 o
- /**
6 D! P2 ?% [# j* T% _/ b - * 2222---- 判断用户是否有某种权限用用户权限和要判断的权限进行 &(按位与) 操作,结果为要判断的权限值时表示用户有此权限,否则没有此权限
/ ]# r4 x; W. y. h: Q - */% I8 C: t _- K$ Z. c1 x
0 l" P( E# T$ H6 k; P: O* P& c* t- if ((usera & u) == u) {" Y" Y' Q) n8 W3 Z
- System.out.println("用户a有更新权限");
% q+ e: q2 r% ~ K6 W7 P E - } else {
% i) P. Y- F6 S+ @- K4 w; [% z - System.out.println("用户a没有有更新权限");8 b$ x4 i/ v( N) U8 m
- }# d$ Q" j7 P$ G+ h' S1 P
( m1 l$ L& l" ^- /**4 ~+ X. T4 N* W5 m3 }; b
- * 3333---- 给用户添加权限用用户权限和要添加的权限|(按位或) 操作再覆盖之前权限值: c) n6 ^0 K8 I+ F7 q7 Q, ^& |; I
- */ Z3 ~8 F, _1 j1 ]9 i3 o
- / x3 ~& m" q4 E1 a- t$ C
- if ((userb & u) == u) {) C I) o6 e- v! }
- System.out.println("用户b有更新权限");
& F/ A, }4 x, T0 b' y* H. Z - } else {
7 n" l; |+ o" C% r# |; I; v l - System.out.println("用户b没有更新权限");4 ?' h7 v6 b$ `0 r" s
- }, L% X- H6 d) t
- 2 }: e- U9 O, M8 C _4 a) m) u/ b
- // 给用户b添加更新权限( T( q7 R( V2 T J/ H% ^4 w8 O: \% z$ R
- userb = userb | u;
# ?! w: K" p- D - , w- ~2 v- ~: b- e# J
- if ((userb & u) == u) {
+ m4 [1 ~2 k* g7 D* d1 s/ g. r - System.out.println("用户b有更新权限");
' o4 F: f: {5 u- g. D - } else {. O. d* C" k8 P3 b# M k
- System.out.println("用户b没有更新权限");! Y. z7 v5 M! ^# m3 n
- }7 l& C( D1 L+ Y" N2 {
& \, E4 y' J# k- /**1 \# r: w2 C! w% @$ Z' M
- * 4444---- 取消用户某种权限,用用户权限和要取消的权限按位取反后进行按位 操作,再覆盖之前权限值1 H+ s" U, ~: u* \$ {
- */
7 W8 x. I8 T2 O4 { -
6 ?. A8 T! |6 L ~/ O- x - if ((usera & r) == r) {- D' [& @3 Q; v
- System.out.println("用户a有查询权限");1 j, M' ^% d$ C, N( ]
- } else {
8 `" O5 F% `, q3 j/ ?! B! [ - System.out.println("用户a没有查询权限");& F/ U, n! U2 m4 Y
- }
7 r0 f: x# U7 s -
0 E4 r) D% [/ S' d - //取消用户a的查询权限4 v; U5 |. Q* d5 O4 ^% \! _( j- s
- usera = usera & (~r);
# f/ s* U" F/ ]& w! x - " ?0 K: s5 x9 `6 K5 ^, n% ]# @4 ~
- if ((usera & r) == r) {( P2 }: Q2 [ H' e8 K, a$ C5 a
- System.out.println("用户a有查询权限");9 r9 p. J& M \9 |( D% M: w7 B
- } else {
- L1 q0 m9 L7 |" L$ f1 \- F - System.out.println("用户a没有查询权限");
+ A' T( A2 u: r% F$ Y - }4 l- e- a; e1 S* O
- }+ X, W5 V" H5 D( l# i; j
- - ~& ?1 \1 c- m/ L% M. [
- }
( \6 V! {. |) I* I" S5 y
复制代码
6 q4 n- I+ L7 I. C' T. l1 u7 o' f
% Y4 x6 h0 G0 n' Z* m: Y4 F1 i
|
|