Write a Java program that allows a user to input the name of a class through the
ID: 3780269 • Letter: W
Question
Write a Java program that allows a user to input the name of a class through the keyboard (at runtime) and then prints out the following information to a file: the class name, its parent class’s name, all implemented interfaces, all public fields, all public constructors (including all arguments), and all public methods of that class. As an example,
if you input “java.awt.Rectangle,”
the output should look something like this:
Rectangle_info.txt class java.awt.Rectangle
extends java.awt.geom.Rectangle2D
implements java.awt.Shape, java.io.Serializable, java.lang.Cloneable
int height
int width
int x
int y
Rectangle()
Rectangle(Dimension)
Rectangle(int, int)
void add(int,int)
void add(Point)
void add(Rectangle)
Boolean contains(int,int)
Note:As a side note, your output file does need not match the above example verbatim. I don’t care if you use short or long class names (e.g. Rectangle vs. java.awt.Rectangle).
Explanation / Answer
package snippet;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Scanner;
public class RefTest {
private int f1(
Object p, int x) throws NullPointerException
{
if (p == null)
throw new NullPointerException();
return x;
}
static void printDetails(Class cls,BufferedWriter bw) throws IOException
{
Method method_list[]
= cls.getDeclaredMethods();
for (int i = 0; i < method_list.length;
i++) {
Method m = method_list[i];
System.out.println(" Class_Name = " + m.getName());
System.out.println(" decl class = "+m.getDeclaringClass());
bw.write(" Class_Name = " + m.getName());
bw.write(" Declaring class = "+m.getDeclaringClass());
Class pvec[] = m.getParameterTypes();
for (int j = 0; j < pvec.length; j++)
{
System.out.println("Parameter #" + j + " " + pvec[j]);
bw.write(" Parameter #" + j + " " + pvec[j]);
}
Class evec[] = m.getExceptionTypes();
for (int j = 0; j < evec.length; j++)
{
System.out.println("exc #" + j + " " + evec[j]);
System.out.println("return type = " +m.getReturnType());
System.out.println("-----");
bw.write(" exc #" + j + " " + evec[j]);
bw.write(" return type = " +m.getReturnType());
bw.write(" -----");
}
}
Constructor ConstrucorList[]
= cls.getDeclaredConstructors();
for (int i = 0; i < ConstrucorList.length; i++)
{
Constructor ct = ConstrucorList[i];
System.out.println("Class_Name= " + ct.getName());
System.out.println("decl class = " +
ct.getDeclaringClass());
bw.write(" Class_Name= " + ct.getName());
bw.write(" Declaring class = " +ct.getDeclaringClass());
Class pvec[] = ct.getParameterTypes();
for (int j = 0; j < pvec.length; j++)
{
System.out.println("Parameter #" + j + " " + pvec[j]);
bw.write(" Parameter #" + j + " " + pvec[j]);
}
Class evec[] = ct.getExceptionTypes();
for (int j = 0; j < evec.length; j++)
{
System.out.println("exc #" + j + " " + evec[j]);
System.out.println("-----");
bw.write(" exc #" + j + " " + evec[j]);
bw.write(" exc #" + j + " " + evec[j]);
}
}
if(cls.getSuperclass()!=null)
{
printDetails(cls.getSuperclass(),bw);
}
}
public static void main(String args[])
{
String s;
System.out.println("enter class Class_Name ");
Scanner sc=new Scanner(System.in);
s=sc.next();
BufferedWriter bw = null;
FileWriter fw = null;
// file.createNewFile();
try {
fw = new FileWriter("Output.txt");
bw = new BufferedWriter(fw);
} catch (IOException e) {
}
try {
Class cls = Class.forName(s);
printDetails(cls,bw);
bw.flush();
fw.close();
}catch (Throwable e) {
System.err.println(e);
}
}
}
========================================================
Output:
enter class Class_Name
java.awt.Rectangle
Class_Name = add
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.Rectangle
Class_Name = add
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.Point
Class_Name = add
decl class = class java.awt.Rectangle
Parameter #0 int
Parameter #1 int
Class_Name = equals
decl class = class java.awt.Rectangle
Parameter #0 class java.lang.Object
Class_Name = toString
decl class = class java.awt.Rectangle
Class_Name = isEmpty
decl class = class java.awt.Rectangle
Class_Name = contains
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.Rectangle
Class_Name = contains
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.Point
Class_Name = contains
decl class = class java.awt.Rectangle
Parameter #0 int
Parameter #1 int
Parameter #2 int
Parameter #3 int
Class_Name = contains
decl class = class java.awt.Rectangle
Parameter #0 int
Parameter #1 int
Class_Name = getLocation
decl class = class java.awt.Rectangle
Class_Name = getSize
decl class = class java.awt.Rectangle
Class_Name = grow
decl class = class java.awt.Rectangle
Parameter #0 int
Parameter #1 int
Class_Name = setSize
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.Dimension
Class_Name = setSize
decl class = class java.awt.Rectangle
Parameter #0 int
Parameter #1 int
Class_Name = resize
decl class = class java.awt.Rectangle
Parameter #0 int
Parameter #1 int
Class_Name = initIDs
decl class = class java.awt.Rectangle
Class_Name = intersects
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.Rectangle
Class_Name = union
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.Rectangle
Class_Name = intersection
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.Rectangle
Class_Name = getX
decl class = class java.awt.Rectangle
Class_Name = getY
decl class = class java.awt.Rectangle
Class_Name = getWidth
decl class = class java.awt.Rectangle
Class_Name = getHeight
decl class = class java.awt.Rectangle
Class_Name = getBounds
decl class = class java.awt.Rectangle
Class_Name = getBounds2D
decl class = class java.awt.Rectangle
Class_Name = setBounds
decl class = class java.awt.Rectangle
Parameter #0 int
Parameter #1 int
Parameter #2 int
Parameter #3 int
Class_Name = setBounds
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.Rectangle
Class_Name = setRect
decl class = class java.awt.Rectangle
Parameter #0 double
Parameter #1 double
Parameter #2 double
Parameter #3 double
Class_Name = clip
decl class = class java.awt.Rectangle
Parameter #0 double
Parameter #1 boolean
Class_Name = reshape
decl class = class java.awt.Rectangle
Parameter #0 int
Parameter #1 int
Parameter #2 int
Parameter #3 int
Class_Name = setLocation
decl class = class java.awt.Rectangle
Parameter #0 int
Parameter #1 int
Class_Name = setLocation
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.Point
Class_Name = move
decl class = class java.awt.Rectangle
Parameter #0 int
Parameter #1 int
Class_Name = translate
decl class = class java.awt.Rectangle
Parameter #0 int
Parameter #1 int
Class_Name = inside
decl class = class java.awt.Rectangle
Parameter #0 int
Parameter #1 int
Class_Name = outcode
decl class = class java.awt.Rectangle
Parameter #0 double
Parameter #1 double
Class_Name = createIntersection
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.geom.Rectangle2D
Class_Name = createUnion
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.geom.Rectangle2D
Class_Name= java.awt.Rectangle
decl class = class java.awt.Rectangle
Parameter #0 int
Parameter #1 int
Parameter #2 int
Parameter #3 int
Class_Name= java.awt.Rectangle
decl class = class java.awt.Rectangle
Parameter #0 int
Parameter #1 int
Class_Name= java.awt.Rectangle
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.Dimension
Class_Name= java.awt.Rectangle
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.Point
Class_Name= java.awt.Rectangle
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.Rectangle
Class_Name= java.awt.Rectangle
decl class = class java.awt.Rectangle
Class_Name= java.awt.Rectangle
decl class = class java.awt.Rectangle
Parameter #0 class java.awt.Point
Parameter #1 class java.awt.Dimension
Class_Name = add
decl class = class java.awt.geom.Rectangle2D
Parameter #0 double
Parameter #1 double
Class_Name = add
decl class = class java.awt.geom.Rectangle2D
Parameter #0 class java.awt.geom.Point2D
Class_Name = add
decl class = class java.awt.geom.Rectangle2D
Parameter #0 class java.awt.geom.Rectangle2D
Class_Name = equals
decl class = class java.awt.geom.Rectangle2D
Parameter #0 class java.lang.Object
Class_Name = hashCode
decl class = class java.awt.geom.Rectangle2D
Class_Name = contains
decl class = class java.awt.geom.Rectangle2D
Parameter #0 double
Parameter #1 double
Class_Name = contains
decl class = class java.awt.geom.Rectangle2D
Parameter #0 double
Parameter #1 double
Parameter #2 double
Parameter #3 double
Class_Name = intersects
decl class = class java.awt.geom.Rectangle2D
Parameter #0 double
Parameter #1 double
Parameter #2 double
Parameter #3 double
Class_Name = union
decl class = class java.awt.geom.Rectangle2D
Parameter #0 class java.awt.geom.Rectangle2D
Parameter #1 class java.awt.geom.Rectangle2D
Parameter #2 class java.awt.geom.Rectangle2D
Class_Name = getBounds2D
decl class = class java.awt.geom.Rectangle2D
Class_Name = setRect
decl class = class java.awt.geom.Rectangle2D
Parameter #0 class java.awt.geom.Rectangle2D
Class_Name = setRect
decl class = class java.awt.geom.Rectangle2D
Parameter #0 double
Parameter #1 double
Parameter #2 double
Parameter #3 double
Class_Name = outcode
decl class = class java.awt.geom.Rectangle2D
Parameter #0 double
Parameter #1 double
Class_Name = outcode
decl class = class java.awt.geom.Rectangle2D
Parameter #0 class java.awt.geom.Point2D
Class_Name = createIntersection
decl class = class java.awt.geom.Rectangle2D
Parameter #0 class java.awt.geom.Rectangle2D
Class_Name = createUnion
decl class = class java.awt.geom.Rectangle2D
Parameter #0 class java.awt.geom.Rectangle2D
Class_Name = intersect
decl class = class java.awt.geom.Rectangle2D
Parameter #0 class java.awt.geom.Rectangle2D
Parameter #1 class java.awt.geom.Rectangle2D
Parameter #2 class java.awt.geom.Rectangle2D
Class_Name = getPathIterator
decl class = class java.awt.geom.Rectangle2D
Parameter #0 class java.awt.geom.AffineTransform
Parameter #1 double
Class_Name = getPathIterator
decl class = class java.awt.geom.Rectangle2D
Parameter #0 class java.awt.geom.AffineTransform
Class_Name = intersectsLine
decl class = class java.awt.geom.Rectangle2D
Parameter #0 double
Parameter #1 double
Parameter #2 double
Parameter #3 double
Class_Name = intersectsLine
decl class = class java.awt.geom.Rectangle2D
Parameter #0 class java.awt.geom.Line2D
Class_Name = setFrame
decl class = class java.awt.geom.Rectangle2D
Parameter #0 double
Parameter #1 double
Parameter #2 double
Parameter #3 double
Class_Name= java.awt.geom.Rectangle2D
decl class = class java.awt.geom.Rectangle2D
Class_Name = clone
decl class = class java.awt.geom.RectangularShape
Class_Name = isEmpty
decl class = class java.awt.geom.RectangularShape
Class_Name = contains
decl class = class java.awt.geom.RectangularShape
Parameter #0 class java.awt.geom.Point2D
Class_Name = contains
decl class = class java.awt.geom.RectangularShape
Parameter #0 class java.awt.geom.Rectangle2D
Class_Name = intersects
decl class = class java.awt.geom.RectangularShape
Parameter #0 class java.awt.geom.Rectangle2D
Class_Name = getX
decl class = class java.awt.geom.RectangularShape
Class_Name = getY
decl class = class java.awt.geom.RectangularShape
Class_Name = getWidth
decl class = class java.awt.geom.RectangularShape
Class_Name = getHeight
decl class = class java.awt.geom.RectangularShape
Class_Name = getBounds
decl class = class java.awt.geom.RectangularShape
Class_Name = getPathIterator
decl class = class java.awt.geom.RectangularShape
Parameter #0 class java.awt.geom.AffineTransform
Parameter #1 double
Class_Name = setFrame
decl class = class java.awt.geom.RectangularShape
Parameter #0 class java.awt.geom.Point2D
Parameter #1 class java.awt.geom.Dimension2D
Class_Name = setFrame
decl class = class java.awt.geom.RectangularShape
Parameter #0 class java.awt.geom.Rectangle2D
Class_Name = setFrame
decl class = class java.awt.geom.RectangularShape
Parameter #0 double
Parameter #1 double
Parameter #2 double
Parameter #3 double
Class_Name = getMinX
decl class = class java.awt.geom.RectangularShape
Class_Name = getMinY
decl class = class java.awt.geom.RectangularShape
Class_Name = getMaxX
decl class = class java.awt.geom.RectangularShape
Class_Name = getMaxY
decl class = class java.awt.geom.RectangularShape
Class_Name = setFrameFromDiagonal
decl class = class java.awt.geom.RectangularShape
Parameter #0 class java.awt.geom.Point2D
Parameter #1 class java.awt.geom.Point2D
Class_Name = setFrameFromDiagonal
decl class = class java.awt.geom.RectangularShape
Parameter #0 double
Parameter #1 double
Parameter #2 double
Parameter #3 double
Class_Name = getCenterX
decl class = class java.awt.geom.RectangularShape
Class_Name = getCenterY
decl class = class java.awt.geom.RectangularShape
Class_Name = getFrame
decl class = class java.awt.geom.RectangularShape
Class_Name = setFrameFromCenter
decl class = class java.awt.geom.RectangularShape
Parameter #0 class java.awt.geom.Point2D
Parameter #1 class java.awt.geom.Point2D
Class_Name = setFrameFromCenter
decl class = class java.awt.geom.RectangularShape
Parameter #0 double
Parameter #1 double
Parameter #2 double
Parameter #3 double
Class_Name= java.awt.geom.RectangularShape
decl class = class java.awt.geom.RectangularShape
Class_Name = finalize
decl class = class java.lang.Object
exc #0 class java.lang.Throwable
return type = void
-----
Class_Name = wait
decl class = class java.lang.Object
Parameter #0 long
Parameter #1 int
exc #0 class java.lang.InterruptedException
return type = void
-----
Class_Name = wait
decl class = class java.lang.Object
Parameter #0 long
exc #0 class java.lang.InterruptedException
return type = void
-----
Class_Name = wait
decl class = class java.lang.Object
exc #0 class java.lang.InterruptedException
return type = void
-----
Class_Name = equals
decl class = class java.lang.Object
Parameter #0 class java.lang.Object
Class_Name = toString
decl class = class java.lang.Object
Class_Name = hashCode
decl class = class java.lang.Object
Class_Name = getClass
decl class = class java.lang.Object
Class_Name = clone
decl class = class java.lang.Object
exc #0 class java.lang.CloneNotSupportedException
return type = class java.lang.Object
-----
Class_Name = registerNatives
decl class = class java.lang.Object
Class_Name = notify
decl class = class java.lang.Object
Class_Name = notifyAll
decl class = class java.lang.Object
Class_Name= java.lang.Object
decl class = class java.lang.Object
=======================================================
Code will print on console as well as in file also
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.