Моя цель:Java Reflection, java.lang.IllegalAccessException Ошибка
Третий класс прочитает имя класса как String, из console.Upon чтения имя класса, он будет автоматически и динамически (!) сгенерируйте этот класс и вызовите его метод записи. Если этот класс не считывается с ввода, он не будет инициализирован.
И принимаю java.lang.IllegalAccessException: Class deneme.class3 can not access a member of class java.lang.Object with modifiers "protected"
Ошибка. И ı не знаю, как это можно исправить. Может ли кто-нибудь мне помочь?
import java.io.*;
import java.lang.reflect.*;
class class3
{
public void run()
{
try
{
BufferedReader reader= new BufferedReader(new InputStreamReader(System.in));
String line=reader.readLine();
Class c1 = Class.forName("java.lang.String");
Object obj = new Object();
Class c2 = obj.getClass();
Method writeout = null;
for(Method mth : c2.getDeclaredMethods()) {
writeout = mth;
break;
}
Object o = c2.newInstance();
writeout.invoke(o);
}
catch(Exception ee)
{
System.out.println("ERROR! "+ee);
}
}
public void writeout3()
{
System.out.println("class3");
}
}
class class4
{
public void writeout4()
{
System.out.println("class4");
}
}
class ornek {
public static void main(String[] args) {
System.out.println("Please Enter Name of Class : ");
class3 example = new class3();
example.run();
}
}
Backticks работают только с встроенным кодом. Для блоков кода, отступ с четырьмя пробелами (точнее, нажмите кнопку и пусть редактор сделает это за вас). – Thomas
Если вы хотите следовать соглашению об именах (и нет причин, по которым вы не должны), вы должны использовать верблюжий корпус для имен типов, например. 'Object',' String', 'BufferedInputStream'. – polygenelubricants