From b53f1c8db1ec870e9fac9d8bfd3e35015a7959fa Mon Sep 17 00:00:00 2001 From: JellyBrick Date: Mon, 13 Feb 2023 11:37:54 +0900 Subject: [PATCH] Use generic instead of raw types --- src/main/java/parser/Function.java | 14 +++++++++++--- src/main/java/util/MathExpressionManager.java | 6 +++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/java/parser/Function.java b/src/main/java/parser/Function.java index b2f0078..f256205 100644 --- a/src/main/java/parser/Function.java +++ b/src/main/java/parser/Function.java @@ -8,6 +8,7 @@ import parser.methods.Method; import java.io.StringReader; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.InputMismatchException; import java.util.List; @@ -223,7 +224,7 @@ public double calc(double... x) { return Double.NaN; } - public static boolean assignObject(String input, Class mathExpClass) { + public static boolean assignObject(String input, Class clazz) { /** * Check if it is a function assignment operation...e.g: @@ -273,10 +274,17 @@ public static boolean assignObject(String input, Class mathExpClass) { success = true; } else { - MathExpression expr = mathExpClass == BigMathExpression.class ? new BigMathExpression(rhs) : new MathExpression(rhs); + MathExpression expr; + try { + expr = clazz.getConstructor(String.class).newInstance(rhs); + } catch (InstantiationException | + IllegalAccessException | + InvocationTargetException | + NoSuchMethodException e) { + throw new RuntimeException(e); // unreachable + } String val = expr.solve(); String referenceName = expr.getReturnObjectName(); - System.out.println("rhs: "+rhs+", mathExpClass: "+mathExpClass+", expr.class: "+expr.getClass()+", val: "+val+", type: "+expr.getReturnType()); if (Variable.isVariableString(newFuncName) || isVarNamesList) { Function f; diff --git a/src/main/java/util/MathExpressionManager.java b/src/main/java/util/MathExpressionManager.java index 8032711..e9544b3 100644 --- a/src/main/java/util/MathExpressionManager.java +++ b/src/main/java/util/MathExpressionManager.java @@ -247,10 +247,10 @@ public MathExpression createFunction( String expr ){ * it has to interpret and then evaluate it. * It then stores the expression. * @param expr The expression to evaluate. - * @param mathExpClazz The java.util.Class that the parent MathExpression belongs to.. may be MathExpression.class, BigMathExpression.class etc. + * @param clazz The java.util.Class that the parent MathExpression belongs to.. may be MathExpression.class, BigMathExpression.class etc. * @return the result. */ - public String solve( String expr , Class mathExpClazz) throws NullPointerException{ + public String solve(String expr, Class clazz) throws NullPointerException{ try { CustomScanner cs = new CustomScanner( STRING.purifier(expr), false, VariableManager.endOfLine); @@ -260,7 +260,7 @@ public String solve( String expr , Class mathExpClazz) throws NullPointerExcepti for(String code : scanned) { if(code.contains("=")){ - boolean success = Function.assignObject(code+";", mathExpClazz); + boolean success = Function.assignObject(code+";", clazz); if(!success) { throw new Exception("Bad Variable or Function assignment!"); }