corejava第8版
This commit is contained in:
1 parent
75e83a331f
commit
e89542a214
522 files changed
+98293
No files matched your search
@@ -0,0 +1,59 @@
|
||||
import java.lang.reflect.*;
|
||||
|
||||
/**
|
||||
* This program shows how to invoke methods through reflection.
|
||||
* @version 1.1 2004-02-21
|
||||
* @author Cay Horstmann
|
||||
*/
|
||||
public class MethodPointerTest
|
||||
{
|
||||
public static void main(String[] args) throws Exception
|
||||
{
|
||||
// get method pointers to the square and sqrt methods
|
||||
Method square = MethodPointerTest.class.getMethod("square", double.class);
|
||||
Method sqrt = Math.class.getMethod("sqrt", double.class);
|
||||
|
||||
// print tables of x- and y-values
|
||||
|
||||
printTable(1, 10, 10, square);
|
||||
printTable(1, 10, 10, sqrt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the square of a number
|
||||
* @param x a number
|
||||
* @return x squared
|
||||
*/
|
||||
public static double square(double x)
|
||||
{
|
||||
return x * x;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints a table with x- and y-values for a method
|
||||
* @param from the lower bound for the x-values
|
||||
* @param to the upper bound for the x-values
|
||||
* @param n the number of rows in the table
|
||||
* @param f a method with a double parameter and double return value
|
||||
*/
|
||||
public static void printTable(double from, double to, int n, Method f)
|
||||
{
|
||||
// print out the method as table header
|
||||
System.out.println(f);
|
||||
|
||||
double dx = (to - from) / (n - 1);
|
||||
|
||||
for (double x = from; x <= to; x += dx)
|
||||
{
|
||||
try
|
||||
{
|
||||
double y = (Double) f.invoke(null, x);
|
||||
System.out.printf("%10.4f | %10.4f%n", x, y);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user