Tuesday, June 24, 2014

Java.reflect questions








hi guys.. im a java newb and I have some questions about reflection. Here is my code in my driver












Java Code:











public class Driver {

@SuppressWarnings("unused")
public static void main(String[] args) throws InstantiationException, IllegalAccessException
{
String a = "ExamplesPkg.Bicycle";
try {
Class<?> newClass = Class.forName(a);
Constructor<?> [] mountainBicycleConstructors = newClass.getConstructors();
for(Constructor<?> constructors: mountainBicycleConstructors)
System.out.println(constructors);

Cadance meansOfTransport = (Cadance)newClass.newInstance();

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}









Bicycle class











Java Code:











package ExamplesPkg;

public class Bicycle implements Cadance {

// the Bicycle class has
// three fields
public int cadence;
public int gear;
public int speed;

// the Bicycle class has
// one constructor
public Bicycle(int startCadence, int startSpeed, int startGear)
{
gear = startGear;
cadence = startCadence;
speed = startSpeed;
}

// the Bicycle class has
// four methods
public void setCadence(int newValue)
{
cadence = newValue;
}
}









Cadance interface











Java Code:











package ExamplesPkg;

public interface Cadance {

public void setCadence(int newValue);
}









so I created some dummy interface just so I could simulate a situation where you dont know the name of a class that you want to instantiate an object of but you do know that it implents a certain interface. So my driver works well until it gets to the







Java Code:











Cadance meansOfTransport = (Cadance)newClass.newInstance();









line. Clearly my System.out.println(constructors); print public ExamplesPkg.Bicycle(int,int,int). So I got the class that I wanted. Now i just want to create an instance of it and im trying to do that ... but when the object "meansOfTransport" gets created I cannot access the default constructor.



So how can I create an instance of Bicycle like this?















No comments:

Post a Comment