You are viewing a single comment's thread. Return to all comments →
CORRECT SOLUTION IN JAVA 8:
import java.lang.annotation.; import java.lang.reflect.; import java.util.*;
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @interface FamilyBudget { String userRole() default "GUEST"; int budgetLimit(); }
class FamilyMember { @FamilyBudget(userRole = "SENIOR", budgetLimit = 100) public void seniorMember(int budget, int moneySpend) { System.out.println("Senior Member"); System.out.println("Spend: " + moneySpend); System.out.println("Budget Left: " + (budget - moneySpend)); }
@FamilyBudget(userRole = "JUNIOR", budgetLimit = 50) public void juniorUser(int budget, int moneySpend) { System.out.println("Junior Member"); System.out.println("Spend: " + moneySpend); System.out.println("Budget Left: " + (budget - moneySpend)); }
}
public class Solution { public static void main(String[] args) { Scanner in = new Scanner(System.in); int testCases = Integer.parseInt(in.nextLine()); while (testCases > 0) { String role = in.next(); int spend = in.nextInt(); try { Class annotatedClass = FamilyMember.class; Method[] methods = annotatedClass.getMethods(); for (Method method : methods) { if (method.isAnnotationPresent(FamilyBudget.class)) { FamilyBudget family = method .getAnnotation(FamilyBudget.class); String userRole = family.userRole(); int budgetLimit = family.budgetLimit(); if (userRole.equals(role)) { if(spend<=budgetLimit){ method.invoke(FamilyMember.class.newInstance(), budgetLimit, spend); }else{ System.out.println("Budget Limit Over"); } } } } } catch (Exception e) { e.printStackTrace(); } testCases--; } } }
Seems like cookies are disabled on this browser, please enable them to open this website
Java Annotations
You are viewing a single comment's thread. Return to all comments →
CORRECT SOLUTION IN JAVA 8:
import java.lang.annotation.; import java.lang.reflect.; import java.util.*;
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @interface FamilyBudget { String userRole() default "GUEST"; int budgetLimit(); }
class FamilyMember { @FamilyBudget(userRole = "SENIOR", budgetLimit = 100) public void seniorMember(int budget, int moneySpend) { System.out.println("Senior Member"); System.out.println("Spend: " + moneySpend); System.out.println("Budget Left: " + (budget - moneySpend)); }
}
public class Solution { public static void main(String[] args) { Scanner in = new Scanner(System.in); int testCases = Integer.parseInt(in.nextLine()); while (testCases > 0) { String role = in.next(); int spend = in.nextInt(); try { Class annotatedClass = FamilyMember.class; Method[] methods = annotatedClass.getMethods(); for (Method method : methods) { if (method.isAnnotationPresent(FamilyBudget.class)) { FamilyBudget family = method .getAnnotation(FamilyBudget.class); String userRole = family.userRole(); int budgetLimit = family.budgetLimit(); if (userRole.equals(role)) { if(spend<=budgetLimit){ method.invoke(FamilyMember.class.newInstance(), budgetLimit, spend); }else{ System.out.println("Budget Limit Over"); } } } } } catch (Exception e) { e.printStackTrace(); } testCases--; } } }