面试题答案
一键面试以下是使用C#实现的代码示例:
using System;
using System.Reflection;
class Program
{
static void Main()
{
// 获取Calculator类所在的程序集
Assembly assembly = Assembly.GetExecutingAssembly();
// 获取Calculator类的类型
Type calculatorType = assembly.GetType("Calculator");
// 通过反射创建Calculator类的实例
object calculatorInstance = Activator.CreateInstance(calculatorType);
// 获取Add方法
MethodInfo addMethod = calculatorType.GetMethod("Add");
// 调用Add方法并传入参数3和5
object result = addMethod.Invoke(calculatorInstance, new object[] { 3, 5 });
// 输出结果
Console.WriteLine(result);
}
}
class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
}
以下是使用Java实现的代码示例:
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Main {
public static void main(String[] args) {
try {
// 获取Calculator类的Class对象
Class<?> calculatorClass = Class.forName("Calculator");
// 通过反射获取Calculator类的构造函数并创建实例
Constructor<?> constructor = calculatorClass.getConstructor();
Object calculatorInstance = constructor.newInstance();
// 获取Add方法
Method addMethod = calculatorClass.getMethod("Add", int.class, int.class);
// 调用Add方法并传入参数3和5
Object result = addMethod.invoke(calculatorInstance, 3, 5);
// 输出结果
System.out.println(result);
} catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
}
class Calculator {
public int Add(int a, int b) {
return a + b;
}
}
请注意,上述C#代码中的Calculator
类需和Program
类在同一程序集中,Java代码中的Calculator
类需和Main
类在同一包下且包名匹配Class.forName
中的类名全限定名。如果实际情况不同,需相应调整获取类型和创建实例的逻辑。