抽象クラス「Profile」を拡張する「UserProfile」と「FingerprintProfile」の2つのクラスがあります。
プロフィール:
/**
* Template for User profiles or Fingerprint profiles
*/
public abstract class Profile {
/**
* Profile Name
*/
private String name;
/**
* Profile id
*/
private int id;
/**
* Set the name of this profile
* @param name
*/
public void setProfileName(String name) {
this.name = name;
}
/**
* Set the id of this profile
* @param name
*/
public void setIdNumber(int id) {
this.id = id;
}
/**
* Get the name of this profile
*/
public String getProfileName() {
return name;
}
/**
* Get the id of this profile
*/
public int getIdNumber() {
return id;
}
}
次のクラスはUserProfileです
public class UserProfile extends Profile {
/**
* Users password
*/
private char[] password;
/**
* Set User password
* @param password
*/
public void setPassword(char[] password){
this.password = password;
}
/**
* Get User password
*/
public char[] getPassword(){
return password;
}
}
このクラスを見るだけでは危険なようですが、このようにパスワードを取得できるのはまったく間違っているようです(getメソッドがprivateの場合でも)。
FingerPrintProfileクラスを作成するときに同じ問題に直面するようです。また、本質的に安全である必要がある「FingerprintData」オブジェクトを保持しているようです。
安全な方法、またはできればこのようなシナリオを解決するために人々が使用するパターンを知っている人はいますか?
ありがとう !
ボーナス質問
両方のタイプのプロファイルのテンプレートを提供するために抽象クラスを作成しましたが、指紋データとテキストパスワードの間には共通の根拠があるようです。ただし、char配列またはFingerprintDataオブジェクトになる可能性のある抽象フィールド「パスワード」を作成することはできません。何か案は??