Mam napisac adnotacje ktora umozliwia:
- nadanie wartości zmiennym wejściowym modelu przed wykonaniem obliczeń,
- pobranie wartości zmiennych wyliczonych w modelu (po wykonaniu obliczeń).
I uzyc mechanizmu przetwarzania adnotacji. Czytam dane z pliku i mam je przekazac do zmiennych oznaczonych adnotacja, potem zostana wykonane na nich jakies obliczenia, a nastepnie mam pobrac ich wartosci. Robie to przez refleksje ale wtedy jest bez roznicy czy jest adnotacja czy tez jej nie ma program dziala tak samo. Mam pytanie jak moge sie odniesc do tych adnotacji, zastosowac ten mechanizm przetwarzania adnotacji. Pozniej kawalek kodu
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Bond {
}
public class Model {
@Bond private int LL;
@Bond private double[] twKI;
@Bond private double[] twKS;
@Bond private double[] twINW;
@Bond private double[] twEKS;
@Bond private double[] twIMP;
@Bond private double[] KI;
@Bond private double[] KS;
@Bond private double[] INW;
@Bond private double[] EKS;
@Bond private double[] IMP;
@Bond private double[] PKB;
public Model() {}
public void run() {
PKB = new double[LL];
PKB[0] = KI[0] + KS[0] + INW[0] + EKS[0] - IMP[0];
for (int t=1; t < LL; t++) {
KI[t] = twKI[t]* KI[t-1];
KS[t] = twKS[t]* KS[t-1];
INW[t] = twINW[t]* INW[t-1];
EKS[t] = twEKS[t]* EKS[t-1];
IMP[t] = twIMP[t]* IMP[t-1];
PKB[t] = KI[t] + KS[t] + INW[t] + EKS[t] - IMP[t];
}
}
}
public class Controller{
private Class class1;
private Object modelName;
class1 = Class.forName("Model");
modelName = class1.newInstance();
/*Przyklad jak ustawiam dane przez refleksje */
Field fieldtkWI = class1.getDeclaredField("twKI");
fieldtkWI.setAccessible(true);
fieldtkWI.set(modelName, twKI);
}