We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
- Prepare
- Java
- Advanced
- Java Annotations
- Discussions
Java Annotations
Java Annotations
Sort by
recency
|
91 Discussions
|
Please Login in order to post a comment
Attention: The test will fail if you change any white-space in the code! Only edit the marked parts, nothing else.
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--; } } }
in this task DO NOT TOUCH any other line than marked! DO NOT ADD a single character anywere beside the marked lines!
Why did they not explicitly state the budget limit for Junior and Senior role? Unnecessarily increasing complexity tbh.
Java Annotations simplify code by providing metadata for classes, methods, and fields, improving readability and maintainability. Explore more insights at RVA Clean Air.