я есть пример простой код:Java - как избавиться от примитивного типа и получить неиспользуемого локальной переменной
class Test {
void method(boolean boo){
String b;
int a=0;
try
{
java.awt.image.BufferedImage image=null;
new Thread().sleep(1000);
javax.swing.JOptionPane.showMessageDialog(null,"test");
java.io.File file=new java.io.File("C:\\file.png");
boolean boo=file.exists();
if(boo==true)
image=javax.imageio.ImageIO.read(file);
}
catch(InterruptedException e){}
}
}
В основном я должен использовать BCEL для доступа байт-код и достичь своей цели. так, у меня есть попытаться создать простой код:
import org.apache.bcel.Repository;
import org.apache.bcel.classfile.*;
class javap
{
public static void main(String[]args)
{
try
{
JavaClass jc = Repository.lookupClass("Test");
ConstantPool constantPool = jc.getConstantPool();
Method [] method=jc.getMethods();
for (Method m : method)
{
LocalVariableTable lvt=m.getLocalVariableTable();
LocalVariable[] lv=lvt.getLocalVariableTable();
for(LocalVariable l : lv)
{
System.out.println(l.getName()+" : "+l.getSignature());
}
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
Результат:
local variable : this --> LTest;
local variable : image --> Ljava/awt/image/BufferedImage;
local variable : file --> Ljava/io/File;
local variable : boo --> Z
local variable : ex --> Ljava/lang/Exception;
local variable : this --> LTest;
local variable : a --> I
Как устранить примитивные типы, которые были извлекаемые как a
как int
и boo
в boolean
, и как получить неиспользованные местные переменная как String b
?
-Thanks-
Этот 'catch' в' Test' ничего не бросает ... sigh –
rakeb.void: учитывая содержимое блока try, я думаю, что здесь можно упустить это. новичок: вы можете использовать классы Wrapper, чтобы избавиться от примитивов, а строка с помощью b вы можете просто удалить или прокомментировать. Таким образом, ваш код (где у вас есть две переменные с именем b) может стать компилируемым. Мне кажется, вы не знаете соглашения об именах и имеете довольно грязный код. Возможно, вам лучше всего изучить основы, прежде чем запускать более сложный код. – Stultuske
@Stultuske, OP не просил советов по оптимизации теста. он/она запрашивал советы по использованию библиотеки BCEL. Я считаю, что код в тесте бесполезен по назначению, и любой, кто разбирает байт-код, вряд ли новичок –