Я пытаюсь пересмотреть подход ООП к мобильной проверке на усмотрение разработчиков.Идея, которую я придумаю, состоит в том, чтобы позволить интерфейсам манипулировать классом.Если класс реализует интерфейс, тогда будет выполнен метод verify.
Проблема, с которой я сталкиваюсь, потому что я привык только к программированию на языках с менее строгой типизацией (PHP), это как получить защищенную переменнуюиз класса, расширяющего текущий класс.
_areaCodes.stream().forEach(o -> {
try {
int prefix = Integer.parseInt(this._mobileNumber.charAt(0), this._mobileNumber.charAt(1));
} catch (Exception e) {}
});
Эта строка кода теперь дает мне ошибку
_mobileNumber не может быть разрешен или не является полем
Вот мой полный код, а вот пример Я написал ту же концепцию в PHP, которую я пытаюсь реализовать в Java.
import java.util.ArrayList;
interface Verification
{
public void initVerification();
}
class AreaCode
{
private int _code;
private String _country;
public AreaCode(int code, String country)
{
this._code = code;
this._country = country;
}
public int getAreaCode() { return this._code; }
public String getAreaCountry() { return this._country; }
}
class VerificationHandler
{
private ArrayList<AreaCode> _areaCodes = new ArrayList<AreaCode>() {{
this.add(new AreaCode(44, "UNITED KINGDOM"));
this.add(new AreaCode(91, "INDIA"));
}};
public void initVerification()
{
if(this instanceof Verification) {
this.verify();
}
}
protected void verify()
{
_areaCodes.stream().forEach(o -> {
try {
int prefix = Integer.parseInt(this._mobileNumber.charAt(0), this._mobileNumber.charAt(1));
} catch (Exception e) {}
});
}
}
class Main extends VerificationHandler implements Verification {
protected String _mobileNumber = "+447435217761";
}
public class Hack1337 { public static void main(String[] args) { new Main(); } }
Как я могу получитьпеременная в классе, расширяющая другой, то есть:
class A { public String getB() { return this.b; } }
class B extends A { protected String b = 'A should get this'; }
B b = new B().getB();