Если все, что вам нужно, это расширить класс JPanel, чтобы вы могли добавить его во вкладку, попробуйте следующее.
Class<? extends JPanel> c = Class.forName(myClassesList[i]).asSubclass(JPanel.class);
JPanel panel = c.newInstance();
jTabbedPane1.addTab(panel);
Это создаст новый класс (с помощью Reflection), который расширяет JPanel, но вы будете ограничены в его функциональности, если вы не приведете его к типу.
Если вы решите, что вам нужно больше взаимодействовать с вашими классами (вызывать другие методы и т. д.) и не хотите вводить тип, вам придется определитьконтракт на занятия.Это будет означать добавление абстрактного класса между вашими классами и иметь абстрактный класс, расширяющий JPanel.Вот пример.
Определите класс Abstract.это будет иметь любые дополнительные имена методов, которые вы хотите в своих классах
public abstract class ATest extends JPanel{
public abstract String doSomething();
}
Тогда вам нужно реализовать ваши конкретные классы
public class Class1 extends ATest{
public Class1(){
//init me
}
@Override
public String doSomething() {
return "Class 2";
}
}
Теперь вы сможете свободно инициализировать класс и делать то, чтопожалуйста, используя отражение
Class<? extends ATest> c = Class.forName(myClassesList[i]).asSubclass(ATest.class);
ATest panel = c.newInstance();
System.out.println(panel.doSomething());
jTabbedPane1.addTab(panel);