帮我解释一下这个JAVA程序每个语句的意思

2024-11-24 10:19:11
推荐回答(2个)
回答1:

package fangfazhizhen;

import java.lang.reflect.*;
import java.text.*;

public class MethodPointerTest
{

/**
* @param args
*/
public static void main(String[] args) throws Exception
{
// TODO 自动生成方法存根
Method square = MethodPointerTest.class.getMethod("square",
new Class[] { double.class }); //创建METHOD对象,具体是什么我也不清楚- -你自己定义的。我猜大概是方形方法(根据名字)
Method sqrt = java.lang.Math.class.getMethod("sqrt",
new Class[] { double.class }); //又创建一个METHOD方法对象(这个要么是圆弧要么是圆吧)
printTable(1, 10, 10, square);
printTable(1, 10, 10, sqrt);
}

public static double square(double x) //定义个返回DOUBLE的SQUARE方法 计算DOUBLE型的平方用
{
return x * x;
}

public static void printTable(double from, double to, int n, Method f)
{
System.out.println(f); //首先打印方法名
NumberFormat formatter = NumberFormat.getNumberInstance();//创建一个 NumberFormat对象 并获得这个对象的数字实例
formatter.setMinimumFractionDigits(4);
formatter.setMinimumFractionDigits(4); //这2句怎么一样估计是你打错了 应该一个是设置最大 一个设置最小吧,。
double dx = (to - from) / (n - 1); //计算DX的值
for (double x = from; x <= to; x += dx)
{
String output = formatter.format(x);
for (int i = 10 - output.length(); i > 0; i--)
System.out.print(' ');
System.out.print(output + "|");
try
{
Object[] args = { new Double(x) };
Double d = (Double) f.invoke(null, args);
double y = d.doubleValue();
output = formatter.format(y);
for (int i = 10 - output.length(); i > 0; i--)
System.out.print(' ');
System.out.println(output);
} catch (Exception e)
{
e.printStackTrace();
}
}
}
}

回答2:

这是java反射机制的一个例子,简单的说就是可以从一个String反射为一个Class