Мне нужно создать приложение, чтобы получить подсчет переменных (атрибутов) класса для заданного файла. java. Поэтому я разработал код, используя отражение java, как показано ниже. Так что здесь я создаю новый. java файл с тем же содержимым, что и при импорте. java файл в моем пакете sr c, потому что тогда этот файл. java может быть доступен для целей отражения. Но проблема в том, что IDE не выясняет обновления этих файлов автоматически, что означает, что даже если файл уже создан в моей директории, IDE не может определить его сразу, поэтому мне нужно обновить sh пакет sr c, чтобы уведомить об обновлениях в IDE. Так как я могу решить эту проблему? проблема. Поэтому, когда вы запустите это в первый раз, будет исключение класса не найден, потому что даже если этот файл. java, уже находящийся в папке IDE sr c, не знает. Я пробовал с затмением, Intelij IDES.
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Field;
importjava.util.concurrent.atomic.AtomicInteger;
public class AppInitializer {
public static void main(String args[])throws Exception{
AtomicInteger atomicInteger = new AtomicInteger();
Runtime.getRuntime().addShutdownHook(new Thread()
{
public void run()
{
try {
meth ();
} catch (ClassNotFoundException e) {
e.printStackTrace ( );
}
}
});
FileReader fr=new FileReader("C:\\Users\\User\\Desktop\\Sample.java");
int i;
StringBuffer str= new StringBuffer("");
while((i=fr.read())!=-1){
str.append ( (char)i );}
String s = String.valueOf ( str );
String replaceString=s.replaceAll ( "public class [^\\n]+", "public class filename{" );
System.out.println (replaceString );
fr.close();
try {
FileWriter myWriter = new FileWriter("src/filename.java");
myWriter.write( String.valueOf ( replaceString ) );
myWriter.close();
System.out.println("Successfully wrote to the file.");
} catch (IOException e) {
System.out.println("An error occurred.");
e.printStackTrace();
}
}
static void meth() throws ClassNotFoundException {
Class classs= Class.forName ( "filename" );
int count = 0;
for (Field field : classs.getDeclaredFields ()){
count++;
}
System.out.println (count );
}
}