From b75f528e932c079bc71d00066b5432823c02f729 Mon Sep 17 00:00:00 2001 From: Kostya Date: Wed, 22 Jul 2026 20:26:21 +0000 Subject: half done --- ex1/src/main/java/reflection/api/App.java | 12 +-- .../reflection/api/ReflectionInvestigator.java | 106 +++++++++++++++++++++ 2 files changed, 111 insertions(+), 7 deletions(-) create mode 100644 ex1/src/main/java/reflection/api/ReflectionInvestigator.java (limited to 'ex1/src/main/java') diff --git a/ex1/src/main/java/reflection/api/App.java b/ex1/src/main/java/reflection/api/App.java index 04cd919..aaead40 100644 --- a/ex1/src/main/java/reflection/api/App.java +++ b/ex1/src/main/java/reflection/api/App.java @@ -1,10 +1,8 @@ -package com.reflection.api; +package reflection.api; -/** - * Hello world! - */ +/** Hello world! */ public class App { - public static void main(String[] args) { - System.out.println("Hello World!"); - } + public static void main(String[] args) { + System.out.println("Hello World!"); + } } diff --git a/ex1/src/main/java/reflection/api/ReflectionInvestigator.java b/ex1/src/main/java/reflection/api/ReflectionInvestigator.java new file mode 100644 index 0000000..2d18b34 --- /dev/null +++ b/ex1/src/main/java/reflection/api/ReflectionInvestigator.java @@ -0,0 +1,106 @@ +package reflection.api; + +import java.lang.reflect.Modifier; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class ReflectionInvestigator implements Investigator { + private Object subjectInstance; + private Class classInfo; + + public ReflectionInvestigator() {} + + @Override + public void load(Object anInstanceOfSomething) { + subjectInstance = anInstanceOfSomething; + classInfo = subjectInstance.getClass(); + } + + @Override + public int getTotalNumberOfMethods() { + return classInfo.getDeclaredMethods().length; + } + + @Override + public int getTotalNumberOfConstructors() { + return classInfo.getConstructors().length; + } + + @Override + public int getTotalNumberOfFields() { + return classInfo.getFields().length; + } + + @Override + public Set getAllImplementedInterfaces() { + return Stream.of(classInfo.getInterfaces()) + .map(info -> info.getName()) + .collect(Collectors.toSet()); + } + + @Override + public int getCountOfConstantFields() { + return Stream.of(classInfo.getFields()) + .filter(f -> Modifier.isFinal(f.getModifiers())) + .toArray() + .length; + } + + @Override + public int getCountOfStaticMethods() { + return Stream.of(classInfo.getMethods()) + .filter(m -> Modifier.isStatic(m.getModifiers())) + .toArray() + .length; + } + + @Override + public boolean isExtending() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'isExtending'"); + } + + @Override + public String getParentClassSimpleName() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'getParentClassSimpleName'"); + } + + @Override + public boolean isParentClassAbstract() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'isParentClassAbstract'"); + } + + @Override + public Set getNamesOfAllFieldsIncludingInheritanceChain() { + // TODO Auto-generated method stub + throw new UnsupportedOperationException( + "Unimplemented method 'getNamesOfAllFieldsIncludingInheritanceChain'"); + } + + @Override + public int invokeMethodThatReturnsInt(String methodName, Object... args) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'invokeMethodThatReturnsInt'"); + } + + @Override + public Object createInstance(int numberOfArgs, Object... args) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'createInstance'"); + } + + @Override + public Object elevateMethodAndInvoke(String name, Class[] parametersTypes, Object... args) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'elevateMethodAndInvoke'"); + } + + @Override + public String getInheritanceChain(String delimiter) { + // TODO Auto-generated method stub + throw new UnsupportedOperationException("Unimplemented method 'getInheritanceChain'"); + } +} -- cgit v1.2.3