国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

控制對類內部數據或函數成員訪問的類

2019-11-18 11:59:54
字體:
來源:轉載
供稿:網友

  public class PRotectClassTest{
  public static void main(String[] args) throws ProtectClass.NoaccessException{
  ProtectClass p1=new ProtectClass("chenqi","100001");
  System.out.println("p1.bankAccount:"+p1.getField(p1.BANKACCOUNT_POS));
  System.out.println("p1.bankPassWord:"+p1.getField(p1.BANKAPASSWORD_POS));
  try{
  p1.setMethod(p1.BANKACCOUNT_POS,"risingsoft");
  }
  catch(ProtectClass.NoAccessException error){
  System.out.println("set p1.bankAccount:"+error);
  }
  try{
  p1.setMethod(p1.BANKAPASSWORD_POS,"100002");
  }
  catch(ProtectClass.NoAccessException error){
  System.out.println("set p1.bankPassword:"+error);
  }
  System.out.println("p1.bankAccount:"+p1.getField(p1.BANKACCOUNT_POS));
  System.out.println("p1.bankPassword:"+p1.getField(p1.BANKAPASSWORD_POS));
  }
  }
  
  class ProtectClass{
  //user define exception
  public static final class NoAccessException extends Exception{
  public String toString(){
  return "No privilege to access this property(field/method)";
  }
  }
  //static final defination section
  public static final int BANKACCOUNT_POS=0;
  public static final int BANKAPASSWORD_POS=1;
  //Inner property state array
  //只需要修改以下的對象元素訪問全縣數組即可動態控制用戶可讀/寫的數據成員范圍。(0,0 / 0,1 / 1,0 / 1,1)
  private static final int[] PROPERTY_ARRAY={0,1};
  //get the property state array count
  private final int getPropertyCount(){
  return (PROPERTY_ARRAY!=null)?PROPERTY_ARRAY.length:0;
  }
  //get the property available state
  public final boolean getPropertyAvailable(int pos){
  return (pos>=0 && pos<getPropertyCount())?(PROPERTY_ARRAY[pos]==1):false;
  }
  //private property defination section
  private String bankAccount;
  private String bankPassword;
  private void setBankAccount(String bankAccount) throws NoAccessException{
  if (getPropertyAvailable(BANKACCOUNT_POS))
  this.bankAccount = bankAccount;
  else
  throw new NoAccessException();
  }
  private void setbankPassword(String bankPassword) throws NoAccessException{
  if(getPropertyAvailable(BANKAPASSWORD_POS))
  this.bankPassword=bankPassword;
  else
  throw new NoAccessException();
  }
  
  ProtectClass(String bankAccount,String bankPassword) throws NoAccessException{
  /*
  假如使用這兩句被屏蔽代碼,則對象無法構造
  this.setBankAccount(bankAccount);
  this.setbankPassword(bankPassword);
  */
  this.bankAccount=bankAccount;
  this.bankPassword=bankPassword;
  }
  ProtectClass() throws NoAccessException{
  this("","");
  }
  
  public final void setMethod(int methodID,String param) throws NoAccessException{
  switch(methodID){
  case BANKACCOUNT_POS:
  try{
  setBankAccount(param);
  }
  catch(NoAccessException error){
  throw error;
  }
  break;
  case BANKAPASSWORD_POS:
  try{
  setbankPassword(param);
  }
  catch(NoAccessException error){
  throw error;
  }
  break;
  }
  }
  private String getBankAccount(){
  if (getPropertyAvailable(BANKACCOUNT_POS))
  return bankAccount;
  else
  return null;
  }
  private String getbankPassword(){
  if(getPropertyAvailable(BANKAPASSWORD_POS))
  return bankPassword;
  else
  return null;
  }
  public final String getField(int methodID){
  switch(methodID){
  case BANKACCOUNT_POS:
  return getBankAccount();
  case BANKAPASSWORD_POS:
  return getbankPassword();
  default:
  return null;
  }
  }
  }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屯门区| 天津市| 大竹县| 喀什市| 枣强县| 儋州市| 兰考县| 昌黎县| 读书| 兰溪市| 阳高县| 莲花县| 岳阳市| 岳阳县| 东阿县| 曲阜市| 凌云县| 准格尔旗| 玉环县| 宽甸| 渝中区| 枣庄市| 普兰县| 海盐县| 达州市| 吴旗县| 深泽县| 定远县| 江达县| 长武县| 西和县| 英山县| 河源市| 金寨县| 峨山| 襄城县| 商丘市| 剑川县| 乌兰浩特市| 泽库县| 特克斯县|