powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как вывести имя переменной, переданной в метод
25 сообщений из 29, страница 1 из 2
Как вывести имя переменной, переданной в метод
    #39651393
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Как вывести имя переменной, которое определено в -main-, в методе -printName-?:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class SimpleTest {
    public static void main(String[] args) {
        Integer a, b;

        printName(a, b);
        printName(b, a);
    }

    private static void printName(Integer a1, Integer b1) {
        System.out.println("Name of first parameter is " + a1..);
        System.out.println("Name of second parameter is " + b1..);
    }
}


Нужно, чтобы было:
авторName of first parameter is a
Name of second parameter is b
Name of first parameter is b
Name of second parameter is a
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39651407
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос странный. Во первых эти имена ты знаешь. Ты-же пишешь текстовые
каменты в вызове out.println(). Во вторых как мне кажется ты ищешь в языке
Java механизмы метапрограммирования которых там вобщем-то нету. Рефлексия
позволяет извлекать часть сведений из бинарника в фазе runtime касаемо типов
аргументов. Но вот имена могут быть скрыты хитрым компиллятором (обфускация)
и твой трюк в перспективе не имеет успеха. Поэтому лучше от твоей идеи отказаться
или просто поставить вопрос по другому.
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39651425
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы скрыть имена (приватных) переменных достаточно добавить g:none к опциям компилятора.
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39651426
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько мне изменяет склероз, переменные - просто индексы в специальной структуре класса.
Если имя не является именем функции или публичной (защищённой) переменной, то имена из исходного текста хранит только отладочная информация.
Отладочную информацию можно убрать или при компиляции или "сладкой парочкой" pack200/unpack200.
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39651480
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
в дальнейшем я одновременно вызываю метод из разных потоков, где при вызове метода подставляются разные переменные.
Я не могу знать какой из потоков будет вызван в какой последовательности, но для логики метода мне необходимо знать какие были переменные.

Если это невозможно с примитивами, то получится ли с коллекциями, например, ArrayList?

Вот пример кода, где в методе -moveListItem- мне нужно через println выводить какой именно ArrayList был загружен в текущем потоке:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;


public class LockUnlock {
    public static void main(String[] args) {
        List<Integer> list1 = new ArrayList<>(Arrays.asList(2, 4, 6, 8));
        List<Integer> list2 = new ArrayList<>(Arrays.asList(1, 3, 5, 7));

        ReentrantLock lockList1 = new ReentrantLock();
        ReentrantLock lockList2 = new ReentrantLock();

        Thread thread1 = new Thread(() -> {
            moveListItem(list1, list2, 2, lockList1, lockList2);
        });

        Thread thread2 = new Thread(() -> {
            moveListItem(list2, list1, 1, lockList2, lockList1);
        });

        thread1.start();
        thread2.start();

        try {
            thread1.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        try {
            thread2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println(list1);
        System.out.println(list2);

    }

    private static void moveListItem(List<Integer> fromList, List<Integer> toList, int item, ReentrantLock lock1, ReentrantLock lock2) {
        try {
            System.out.println(Thread.currentThread().getName() + " trying to lock -fromList-.");
            if(lock1.tryLock(1, TimeUnit.SECONDS)){
                System.out.println(Thread.currentThread().getName() + " locked -fromList-.");

                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                Thread.yield();

                try {
                    System.out.println(Thread.currentThread().getName() + " trying to lock -toList-.");
                    if(lock2.tryLock(1, TimeUnit.SECONDS)){
                        System.out.println(Thread.currentThread().getName() + " locked -toList-.");

                        if (fromList.contains(item)) {
                            fromList.remove(item);
                            toList.add(item);
                        }

                        lock2.unlock();
                        System.out.println(Thread.currentThread().getName() + "  unlock -toList-.");
                    }
                    else {
                        System.out.println(Thread.currentThread().getName() + " cant lock -toList-.");
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                lock1.unlock();
                System.out.println(Thread.currentThread().getName() + "  unlock -fromList-.");
            }
            else {
                System.out.println(Thread.currentThread().getName() + " cant lock -fromList-.");
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39651486
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MolasarЯ не могу знать какой из потоков будет вызван в какой последовательности, но для логики метода мне необходимо знать какие были переменные.Если не страдать фигнёй, то требуемая информация замечательно протоколируется из вызывающего метода:
Код: java
1.
2.
3.
log.debug("Before метод(аргументы)");
ИмяМетода(список, аргументов);
log.debug("After метод(аргументы)");
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39651493
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39651542
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Molasar, несколько мыслей.

1. Если отказаться от system.out и заменить это на log4j или любую библиотеку логгирования то у тебя в месседже появляется возможность печатать threadid.

2. Любой java объект и ArrayList в том числе уникален своим objectid и его можно также распечатать в лог.
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39651585
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonMolasar, несколько мыслей.

1. Если отказаться от system.out и заменить это на log4j или любую библиотеку логгирования то у тебя в месседже появляется возможность печатать threadid.

2. Любой java объект и ArrayList в том числе уникален своим objectid и его можно также распечатать в лог.
+1
Нафига велосипеды писать?
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39653623
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имена переменных в java не хранятся после компиляции
хранятся только имена филдов

g:none не влияет на имена переменных
оно убирает некоторые атрибуты из класс файла
верьте мне, я уже пол декомпайлера написал


Код: java
1.
2.
3.
class z {
    private int xxx;
}
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39653628
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
class z {

    private int xxx;

    void z1(int x) {
        System.out.println(x);
    }

    void z2() {
        z1(xxx);
        int var1 = 5;
        z1(var1);
    }
}




magic : ca:fe:ba:be
minorVersion : 0
majorVersion : 52
ACC_SUPER
thisClass: Constant #6 (CLASS) nameIndex #26
thisClass: Constant #26 (UTF8) utf8Value = z
superClass: Constant #7 (CLASS) nameIndex #27
superClass: Constant #27 (UTF8) utf8Value = java/lang/Object
interfaces [0]
fields [1]
field 0: fieldInfo accessFlags = 0x2 ACC_PRIVATE nameIndex #8 descriptorIndex #9
field 0: Constant #8 (UTF8) utf8Value = xxx
field 0: Constant #9 (UTF8) utf8Value = I
methods [3]
method 0: MethodInfo accFlags 0x0 nameIndex #10 desriptorIndex #11
method 0: Constant #10 (UTF8) utf8Value = <init>
method 0: Constant #11 (UTF8) utf8Value = ()V
method 0: Attribute (Code) attributeNameIndex #12 maxStacks = 1 maxLocals = 1
method 0: Constant #12 (UTF8) utf8Value = Code
method 0: 0 : aload_0 // The value of type reference from local variable array at index 0 is pushed onto the operand stack.
method 0: 1 : invokespecial #1 // Invoke instance method cp index #1. Stack: .., objectref, [arg1, [arg2 ...]] -> ...
method 0: Constant #1 (METHODREF) classIndex #7 nameAndTypeIndex #19
method 0: Constant #7 (CLASS) nameIndex #27
method 0: Constant #27 (UTF8) utf8Value = java/lang/Object
method 0: Constant #19 (NAMETYPE) nameIndex #10 descriptorIndex #11
method 0: Constant #10 (UTF8) utf8Value = <init>
method 0: Constant #11 (UTF8) utf8Value = ()V
method 0: 4 : return // Return void from method. Stack: ... -> [empty]
method 0: exceptions [0]
method 0: attributes [1]
method 0: Attribute (LineNumberTable) attributeNameIndex = 13
method 0: Constant #13 (UTF8) utf8Value = LineNumberTable
method 0: lineNumbers [1]
method 0: lineNumber startPc = 0 lineNumber = 3
method 1: MethodInfo accFlags 0x0 nameIndex #14 desriptorIndex #15
method 1: Constant #14 (UTF8) utf8Value = z1
method 1: Constant #15 (UTF8) utf8Value = (I)V
method 1: Attribute (Code) attributeNameIndex #12 maxStacks = 2 maxLocals = 2
method 1: Constant #12 (UTF8) utf8Value = Code
method 1: 0 : getstatic #2 // Get static field cp index #2 from class.
method 1: Constant #2 (FIELDREF) classIndex #20 nameAndTypeIndex #21
method 1: Constant #20 (CLASS) nameIndex #28
method 1: Constant #28 (UTF8) utf8Value = java/lang/System
method 1: Constant #21 (NAMETYPE) nameIndex #29 descriptorIndex #30
method 1: Constant #29 (UTF8) utf8Value = out
method 1: Constant #30 (UTF8) utf8Value = Ljava/io/PrintStream;
method 1: 3 : iload_1 // The int value from local variable array at index 1 is pushed onto the operand stack.
method 1: 4 : invokevirtual #3 // Invoke instance method cp index #3; dispatch based on class.
method 1: Constant #3 (METHODREF) classIndex #22 nameAndTypeIndex #23
method 1: Constant #22 (CLASS) nameIndex #31
method 1: Constant #31 (UTF8) utf8Value = java/io/PrintStream
method 1: Constant #23 (NAMETYPE) nameIndex #32 descriptorIndex #15
method 1: Constant #32 (UTF8) utf8Value = println
method 1: Constant #15 (UTF8) utf8Value = (I)V
method 1: 7 : return // Return void from method. Stack: ... -> [empty]
method 1: exceptions [0]
method 1: attributes [1]
method 1: Attribute (LineNumberTable) attributeNameIndex = 13
method 1: Constant #13 (UTF8) utf8Value = LineNumberTable
method 1: lineNumbers [2]
method 1: lineNumber startPc = 0 lineNumber = 8
method 1: lineNumber startPc = 7 lineNumber = 9
method 2: MethodInfo accFlags 0x0 nameIndex #16 desriptorIndex #11
method 2: Constant #16 (UTF8) utf8Value = z2
method 2: Constant #11 (UTF8) utf8Value = ()V
method 2: Attribute (Code) attributeNameIndex #12 maxStacks = 2 maxLocals = 2
method 2: Constant #12 (UTF8) utf8Value = Code
method 2: 0 : aload_0 // The value of type reference from local variable array at index 0 is pushed onto the operand stack.
method 2: 1 : aload_0 // The value of type reference from local variable array at index 0 is pushed onto the operand stack.
method 2: 2 : getfield #4 // Fetch field cp index #4 from object.
method 2: Constant #4 (FIELDREF) classIndex #6 nameAndTypeIndex #24
method 2: Constant #6 (CLASS) nameIndex #26
method 2: Constant #26 (UTF8) utf8Value = z
method 2: Constant #24 (NAMETYPE) nameIndex #8 descriptorIndex #9
method 2: Constant #8 (UTF8) utf8Value = xxx
method 2: Constant #9 (UTF8) utf8Value = I
method 2: 5 : invokevirtual #5 // Invoke instance method cp index #5; dispatch based on class.
method 2: Constant #5 (METHODREF) classIndex #6 nameAndTypeIndex #25
method 2: Constant #6 (CLASS) nameIndex #26
method 2: Constant #26 (UTF8) utf8Value = z
method 2: Constant #25 (NAMETYPE) nameIndex #14 descriptorIndex #15
method 2: Constant #14 (UTF8) utf8Value = z1
method 2: Constant #15 (UTF8) utf8Value = (I)V
method 2: 8 : iconst_5 // Push the int constant 5 onto the operand stack.
method 2: 9 : istore_1 // Store int from stack into local variable 1.
method 2: 10 : aload_0 // The value of type reference from local variable array at index 0 is pushed onto the operand stack.
method 2: 11 : iload_1 // The int value from local variable array at index 1 is pushed onto the operand stack.
method 2: 12 : invokevirtual #5 // Invoke instance method cp index #5; dispatch based on class.
method 2: Constant #5 (METHODREF) classIndex #6 nameAndTypeIndex #25
method 2: Constant #6 (CLASS) nameIndex #26
method 2: Constant #26 (UTF8) utf8Value = z
method 2: Constant #25 (NAMETYPE) nameIndex #14 descriptorIndex #15
method 2: Constant #14 (UTF8) utf8Value = z1
method 2: Constant #15 (UTF8) utf8Value = (I)V
method 2: 15 : return // Return void from method. Stack: ... -> [empty]
method 2: exceptions [0]
method 2: attributes [1]
method 2: Attribute (LineNumberTable) attributeNameIndex = 13
method 2: Constant #13 (UTF8) utf8Value = LineNumberTable
method 2: lineNumbers [4]
method 2: lineNumber startPc = 0 lineNumber = 12
method 2: lineNumber startPc = 8 lineNumber = 13
method 2: lineNumber startPc = 10 lineNumber = 14
method 2: lineNumber startPc = 15 lineNumber = 15
attributes [1]
attribute 0: Attribute (SourceFile) attributeNameIndex = 17 sourceFileIndex = 18
attribute 0: Constant #17 (UTF8) utf8Value = SourceFile
attribute 0: Constant #18 (UTF8) utf8Value = z.java
constantPool [33]
Constant #1 (METHODREF) classIndex #7 nameAndTypeIndex #19
Constant #7 (CLASS) nameIndex #27
Constant #27 (UTF8) utf8Value = java/lang/Object
Constant #19 (NAMETYPE) nameIndex #10 descriptorIndex #11
Constant #10 (UTF8) utf8Value = <init>
Constant #11 (UTF8) utf8Value = ()V
Constant #2 (FIELDREF) classIndex #20 nameAndTypeIndex #21
Constant #20 (CLASS) nameIndex #28
Constant #28 (UTF8) utf8Value = java/lang/System
Constant #21 (NAMETYPE) nameIndex #29 descriptorIndex #30
Constant #29 (UTF8) utf8Value = out
Constant #30 (UTF8) utf8Value = Ljava/io/PrintStream;
Constant #3 (METHODREF) classIndex #22 nameAndTypeIndex #23
Constant #22 (CLASS) nameIndex #31
Constant #31 (UTF8) utf8Value = java/io/PrintStream
Constant #23 (NAMETYPE) nameIndex #32 descriptorIndex #15
Constant #32 (UTF8) utf8Value = println
Constant #15 (UTF8) utf8Value = (I)V
Constant #4 (FIELDREF) classIndex #6 nameAndTypeIndex #24
Constant #6 (CLASS) nameIndex #26
Constant #26 (UTF8) utf8Value = z
Constant #24 (NAMETYPE) nameIndex #8 descriptorIndex #9
Constant #8 (UTF8) utf8Value = xxx
Constant #9 (UTF8) utf8Value = I
Constant #5 (METHODREF) classIndex #6 nameAndTypeIndex #25
Constant #6 (CLASS) nameIndex #26
Constant #26 (UTF8) utf8Value = z
Constant #25 (NAMETYPE) nameIndex #14 descriptorIndex #15
Constant #14 (UTF8) utf8Value = z1
Constant #15 (UTF8) utf8Value = (I)V
Constant #6 (CLASS) nameIndex #26
Constant #26 (UTF8) utf8Value = z
Constant #7 (CLASS) nameIndex #27
Constant #27 (UTF8) utf8Value = java/lang/Object
Constant #8 (UTF8) utf8Value = xxx
Constant #9 (UTF8) utf8Value = I
Constant #10 (UTF8) utf8Value = <init>
Constant #11 (UTF8) utf8Value = ()V
Constant #12 (UTF8) utf8Value = Code
Constant #13 (UTF8) utf8Value = LineNumberTable
Constant #14 (UTF8) utf8Value = z1
Constant #15 (UTF8) utf8Value = (I)V
Constant #16 (UTF8) utf8Value = z2
Constant #17 (UTF8) utf8Value = SourceFile
Constant #18 (UTF8) utf8Value = z.java
Constant #19 (NAMETYPE) nameIndex #10 descriptorIndex #11
Constant #10 (UTF8) utf8Value = <init>
Constant #11 (UTF8) utf8Value = ()V
Constant #20 (CLASS) nameIndex #28
Constant #28 (UTF8) utf8Value = java/lang/System
Constant #21 (NAMETYPE) nameIndex #29 descriptorIndex #30
Constant #29 (UTF8) utf8Value = out
Constant #30 (UTF8) utf8Value = Ljava/io/PrintStream;
Constant #22 (CLASS) nameIndex #31
Constant #31 (UTF8) utf8Value = java/io/PrintStream
Constant #23 (NAMETYPE) nameIndex #32 descriptorIndex #15
Constant #32 (UTF8) utf8Value = println
Constant #15 (UTF8) utf8Value = (I)V
Constant #24 (NAMETYPE) nameIndex #8 descriptorIndex #9
Constant #8 (UTF8) utf8Value = xxx
Constant #9 (UTF8) utf8Value = I
Constant #25 (NAMETYPE) nameIndex #14 descriptorIndex #15
Constant #14 (UTF8) utf8Value = z1
Constant #15 (UTF8) utf8Value = (I)V
Constant #26 (UTF8) utf8Value = z
Constant #27 (UTF8) utf8Value = java/lang/Object
Constant #28 (UTF8) utf8Value = java/lang/System
Constant #29 (UTF8) utf8Value = out
Constant #30 (UTF8) utf8Value = Ljava/io/PrintStream;
Constant #31 (UTF8) utf8Value = java/io/PrintStream
Constant #32 (UTF8) utf8Value = println
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39653629
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот это, конечно, жесть

Код: plaintext
1.
2.
3.
4.
5.
6.
method 2:       8  : iconst_5            // Push the int constant 5 onto the operand stack.
method 2:       9  : istore_1            // Store int from stack into local variable 1.
method 2:       10 : aload_0             // The value of type reference from local variable array at index 0 is pushed onto the operand stack.
method 2:       11 : iload_1             // The int value from local variable array at index 1 is pushed onto the operand stack.
method 2:       12 : invokevirtual   #5  // Invoke instance method cp index #5; dispatch based on class.

...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39653683
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новый Годверьте мне, я уже пол декомпайлера написалГотовые чем не устроили?
Test.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class Test {
	private static final String ONLY_DOT = ".";
	public static void main(String[] args) {
		String msg = ONLY_DOT;
		if (args != null) msg = args[0];
		System.out.println(msg);
	}
}

Вверху скриншота декомпиляция класса с "javac -g", внизу - с "javac -g:none".
Видно, что не сопоставлена только оптимизация, сделанная уже компилятором для статических констант:
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39653706
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovГотовые чем не устроили?
развлекался просто

авторВидно, что не сопоставлена только оптимизация, сделанная уже компилятором для статических констант


не не не!!!
ничего там не видно
только название переменной поменялось в коде
оптимизации вообще нет, инструкции те же самые

атрибуты LineNumberTable и SourceFile там выкинулись


https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7.12
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7.10
а у тебя может еще был кастомный атрибут, из которого название переменной бралось
но вообще стандартного в спеке такого нет

ты hexdump-ом посмотри, что поменялось
или вот распечатка

без -g:none
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
magic     : ca:fe:ba:be
minorVersion : 0
majorVersion : 52
ACC_PUBLIC|ACC_SUPER
thisClass: Constant #2 (CLASS) nameIndex #21
thisClass:   Constant #21 (UTF8) utf8Value = Test
superClass: Constant #6 (CLASS) nameIndex #27
superClass:   Constant #27 (UTF8) utf8Value = java/lang/Object
interfaces [0]
fields [1]
field 0: fieldInfo accessFlags = 0x1a ACC_PRIVATE|ACC_STATIC|ACC_FINAL nameIndex #7 descriptorIndex #8
field 0:   Constant #7 (UTF8) utf8Value = ONLY_DOT
field 0:   Constant #8 (UTF8) utf8Value = Ljava/lang/String;
field 0:   Attribute (ConstantValue) attributeNameIndex = 9 constantValueIndex = 3
field 0:     Constant #9 (UTF8) utf8Value = ConstantValue
field 0:     Constant #3 (STRING) stringIndex #22
field 0:       Constant #22 (UTF8) utf8Value = .
methods [2]
method 0: MethodInfo accFlags 0x1 ACC_PUBLIC nameIndex #10 desriptorIndex #11
method 0:   Constant #10 (UTF8) utf8Value = <init>
method 0:   Constant #11 (UTF8) utf8Value = ()V
method 0:     Attribute (Code) attributeNameIndex #12 maxStacks = 1 maxLocals = 1
method 0:       Constant #12 (UTF8) utf8Value = Code
method 0:       0 : aload_0             // The value of type reference from local variable array at index 0 is pushed onto the operand stack.
method 0:       1 : invokespecial   #1  // Invoke instance method cp index #1. Stack: .., objectref, [arg1, [arg2 ...]] -> ...
method 0:                          Constant #1 (METHODREF) classIndex #6 nameAndTypeIndex #20
method 0:                            Constant #6 (CLASS) nameIndex #27
method 0:                              Constant #27 (UTF8) utf8Value = java/lang/Object
method 0:                            Constant #20 (NAMETYPE) nameIndex #10 descriptorIndex #11
method 0:                              Constant #10 (UTF8) utf8Value = <init>
method 0:                              Constant #11 (UTF8) utf8Value = ()V
method 0:       4 : return              // Return void from method. Stack: ... -> [empty]
method 0:       exceptions [0]
method 0:       attributes [1]
method 0:         Attribute (LineNumberTable) attributeNameIndex = 13
method 0:           Constant #13 (UTF8) utf8Value = LineNumberTable
method 0:           lineNumbers [1]
method 0:             lineNumber startPc = 0 lineNumber = 1
method 1: MethodInfo accFlags 0x9 ACC_PUBLIC|ACC_STATIC nameIndex #14 desriptorIndex #15
method 1:   Constant #14 (UTF8) utf8Value = main
method 1:   Constant #15 (UTF8) utf8Value = ([Ljava/lang/String;)V
method 1:     Attribute (Code) attributeNameIndex #12 maxStacks = 2 maxLocals = 2
method 1:       Constant #12 (UTF8) utf8Value = Code
method 1:       0  : ldc             #3  // The value from constant pool at index 3 is pushed onto the operand stack.
method 1:                           Constant #3 (STRING) stringIndex #22
method 1:                             Constant #22 (UTF8) utf8Value = .
method 1:       2  : astore_1            // Store reference from stack into local variable 1.
method 1:       3  : aload_0             // The value of type reference from local variable array at index 0 is pushed onto the operand stack.
method 1:       4  : ifnull              // offset = 7.
method 1:       7  : aload_0             // The value of type reference from local variable array at index 0 is pushed onto the operand stack.
method 1:       8  : iconst_0            // Push the int constant 0 onto the operand stack.
method 1:       9  : aaload              // Load reference from array. Stack: ..., arrayref, index -> ..., value.
method 1:       10 : astore_1            // Store reference from stack into local variable 1.
method 1:       11 : getstatic       #4  // Get static field cp index #4 from class.
method 1:                           Constant #4 (FIELDREF) classIndex #23 nameAndTypeIndex #24
method 1:                             Constant #23 (CLASS) nameIndex #29
method 1:                               Constant #29 (UTF8) utf8Value = java/lang/System
method 1:                             Constant #24 (NAMETYPE) nameIndex #30 descriptorIndex #31
method 1:                               Constant #30 (UTF8) utf8Value = out
method 1:                               Constant #31 (UTF8) utf8Value = Ljava/io/PrintStream;
method 1:       14 : aload_1             // The value of type reference from local variable array at index 1 is pushed onto the operand stack.
method 1:       15 : invokevirtual   #5  // Invoke instance method cp index #5; dispatch based on class.
method 1:                           Constant #5 (METHODREF) classIndex #25 nameAndTypeIndex #26
method 1:                             Constant #25 (CLASS) nameIndex #32
method 1:                               Constant #32 (UTF8) utf8Value = java/io/PrintStream
method 1:                             Constant #26 (NAMETYPE) nameIndex #33 descriptorIndex #34
method 1:                               Constant #33 (UTF8) utf8Value = println
method 1:                               Constant #34 (UTF8) utf8Value = (Ljava/lang/String;)V
method 1:       18 : return              // Return void from method. Stack: ... -> [empty]
method 1:       exceptions [0]
method 1:       attributes [2]
method 1:         Attribute (LineNumberTable) attributeNameIndex = 13
method 1:           Constant #13 (UTF8) utf8Value = LineNumberTable
method 1:           lineNumbers [4]
method 1:             lineNumber startPc = 0 lineNumber = 4
method 1:             lineNumber startPc = 3 lineNumber = 5
method 1:             lineNumber startPc = 11 lineNumber = 6
method 1:             lineNumber startPc = 18 lineNumber = 7
method 1:         Attribute (StackMapTable) attributeNameIndex = 16
method 1:           Constant #16 (UTF8) utf8Value = StackMapTable
method 1:           entries [1]
method 1:             stackMapFrame type = 252 offsetDelta = 11
method 1:               locals [1]
method 1:                 VerificationTypeInfo type = 7
method 1:                   Constant #17 (CLASS) nameIndex #28
method 1:                     Constant #28 (UTF8) utf8Value = java/lang/String
attributes [1]
attribute 0: Attribute (SourceFile) attributeNameIndex = 18 sourceFileIndex = 19
attribute 0:   Constant #18 (UTF8) utf8Value = SourceFile
attribute 0:   Constant #19 (UTF8) utf8Value = Test.java
constantPool [35]
Constant #1 (METHODREF) classIndex #6 nameAndTypeIndex #20
  Constant #6 (CLASS) nameIndex #27
    Constant #27 (UTF8) utf8Value = java/lang/Object
  Constant #20 (NAMETYPE) nameIndex #10 descriptorIndex #11
    Constant #10 (UTF8) utf8Value = <init>
    Constant #11 (UTF8) utf8Value = ()V
Constant #2 (CLASS) nameIndex #21
  Constant #21 (UTF8) utf8Value = Test
Constant #3 (STRING) stringIndex #22
  Constant #22 (UTF8) utf8Value = .
Constant #4 (FIELDREF) classIndex #23 nameAndTypeIndex #24
  Constant #23 (CLASS) nameIndex #29
    Constant #29 (UTF8) utf8Value = java/lang/System
  Constant #24 (NAMETYPE) nameIndex #30 descriptorIndex #31
    Constant #30 (UTF8) utf8Value = out
    Constant #31 (UTF8) utf8Value = Ljava/io/PrintStream;
Constant #5 (METHODREF) classIndex #25 nameAndTypeIndex #26
  Constant #25 (CLASS) nameIndex #32
    Constant #32 (UTF8) utf8Value = java/io/PrintStream
  Constant #26 (NAMETYPE) nameIndex #33 descriptorIndex #34
    Constant #33 (UTF8) utf8Value = println
    Constant #34 (UTF8) utf8Value = (Ljava/lang/String;)V
Constant #6 (CLASS) nameIndex #27
  Constant #27 (UTF8) utf8Value = java/lang/Object
Constant #7 (UTF8) utf8Value = ONLY_DOT
Constant #8 (UTF8) utf8Value = Ljava/lang/String;
Constant #9 (UTF8) utf8Value = ConstantValue
Constant #10 (UTF8) utf8Value = <init>
Constant #11 (UTF8) utf8Value = ()V
Constant #12 (UTF8) utf8Value = Code
Constant #13 (UTF8) utf8Value = LineNumberTable
Constant #14 (UTF8) utf8Value = main
Constant #15 (UTF8) utf8Value = ([Ljava/lang/String;)V
Constant #16 (UTF8) utf8Value = StackMapTable
Constant #17 (CLASS) nameIndex #28
  Constant #28 (UTF8) utf8Value = java/lang/String
Constant #18 (UTF8) utf8Value = SourceFile
Constant #19 (UTF8) utf8Value = Test.java
Constant #20 (NAMETYPE) nameIndex #10 descriptorIndex #11
  Constant #10 (UTF8) utf8Value = <init>
  Constant #11 (UTF8) utf8Value = ()V
Constant #21 (UTF8) utf8Value = Test
Constant #22 (UTF8) utf8Value = .
Constant #23 (CLASS) nameIndex #29
  Constant #29 (UTF8) utf8Value = java/lang/System
Constant #24 (NAMETYPE) nameIndex #30 descriptorIndex #31
  Constant #30 (UTF8) utf8Value = out
  Constant #31 (UTF8) utf8Value = Ljava/io/PrintStream;
Constant #25 (CLASS) nameIndex #32
  Constant #32 (UTF8) utf8Value = java/io/PrintStream
Constant #26 (NAMETYPE) nameIndex #33 descriptorIndex #34
  Constant #33 (UTF8) utf8Value = println
  Constant #34 (UTF8) utf8Value = (Ljava/lang/String;)V
Constant #27 (UTF8) utf8Value = java/lang/Object
Constant #28 (UTF8) utf8Value = java/lang/String
Constant #29 (UTF8) utf8Value = java/lang/System
Constant #30 (UTF8) utf8Value = out
Constant #31 (UTF8) utf8Value = Ljava/io/PrintStream;
Constant #32 (UTF8) utf8Value = java/io/PrintStream
Constant #33 (UTF8) utf8Value = println
Constant #34 (UTF8) utf8Value = (Ljava/lang/String;)V

 [code=plaintext]


c -g:none
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
magic     : ca:fe:ba:be
minorVersion : 0
majorVersion : 52
ACC_PUBLIC|ACC_SUPER
thisClass: Constant #2 (CLASS) nameIndex #18
thisClass:   Constant #18 (UTF8) utf8Value = Test
superClass: Constant #6 (CLASS) nameIndex #24
superClass:   Constant #24 (UTF8) utf8Value = java/lang/Object
interfaces [0]
fields [1]
field 0: fieldInfo accessFlags = 0x1a ACC_PRIVATE|ACC_STATIC|ACC_FINAL nameIndex #7 descriptorIndex #8
field 0:   Constant #7 (UTF8) utf8Value = ONLY_DOT
field 0:   Constant #8 (UTF8) utf8Value = Ljava/lang/String;
field 0:   Attribute (ConstantValue) attributeNameIndex = 9 constantValueIndex = 3
field 0:     Constant #9 (UTF8) utf8Value = ConstantValue
field 0:     Constant #3 (STRING) stringIndex #19
field 0:       Constant #19 (UTF8) utf8Value = .
methods [2]
method 0: MethodInfo accFlags 0x1 ACC_PUBLIC nameIndex #10 desriptorIndex #11
method 0:   Constant #10 (UTF8) utf8Value = <init>
method 0:   Constant #11 (UTF8) utf8Value = ()V
method 0:     Attribute (Code) attributeNameIndex #12 maxStacks = 1 maxLocals = 1
method 0:       Constant #12 (UTF8) utf8Value = Code
method 0:       0 : aload_0             // The value of type reference from local variable array at index 0 is pushed onto the operand stack.
method 0:       1 : invokespecial   #1  // Invoke instance method cp index #1. Stack: .., objectref, [arg1, [arg2 ...]] -> ...
method 0:                          Constant #1 (METHODREF) classIndex #6 nameAndTypeIndex #17
method 0:                            Constant #6 (CLASS) nameIndex #24
method 0:                              Constant #24 (UTF8) utf8Value = java/lang/Object
method 0:                            Constant #17 (NAMETYPE) nameIndex #10 descriptorIndex #11
method 0:                              Constant #10 (UTF8) utf8Value = <init>
method 0:                              Constant #11 (UTF8) utf8Value = ()V
method 0:       4 : return              // Return void from method. Stack: ... -> [empty]
method 0:       exceptions [0]
method 0:       attributes [0]
method 1: MethodInfo accFlags 0x9 ACC_PUBLIC|ACC_STATIC nameIndex #13 desriptorIndex #14
method 1:   Constant #13 (UTF8) utf8Value = main
method 1:   Constant #14 (UTF8) utf8Value = ([Ljava/lang/String;)V
method 1:     Attribute (Code) attributeNameIndex #12 maxStacks = 2 maxLocals = 2
method 1:       Constant #12 (UTF8) utf8Value = Code
method 1:       0  : ldc             #3  // The value from constant pool at index 3 is pushed onto the operand stack.
method 1:                           Constant #3 (STRING) stringIndex #19
method 1:                             Constant #19 (UTF8) utf8Value = .
method 1:       2  : astore_1            // Store reference from stack into local variable 1.
method 1:       3  : aload_0             // The value of type reference from local variable array at index 0 is pushed onto the operand stack.
method 1:       4  : ifnull              // offset = 7.
method 1:       7  : aload_0             // The value of type reference from local variable array at index 0 is pushed onto the operand stack.
method 1:       8  : iconst_0            // Push the int constant 0 onto the operand stack.
method 1:       9  : aaload              // Load reference from array. Stack: ..., arrayref, index -> ..., value.
method 1:       10 : astore_1            // Store reference from stack into local variable 1.
method 1:       11 : getstatic       #4  // Get static field cp index #4 from class.
method 1:                           Constant #4 (FIELDREF) classIndex #20 nameAndTypeIndex #21
method 1:                             Constant #20 (CLASS) nameIndex #26
method 1:                               Constant #26 (UTF8) utf8Value = java/lang/System
method 1:                             Constant #21 (NAMETYPE) nameIndex #27 descriptorIndex #28
method 1:                               Constant #27 (UTF8) utf8Value = out
method 1:                               Constant #28 (UTF8) utf8Value = Ljava/io/PrintStream;
method 1:       14 : aload_1             // The value of type reference from local variable array at index 1 is pushed onto the operand stack.
method 1:       15 : invokevirtual   #5  // Invoke instance method cp index #5; dispatch based on class.
method 1:                           Constant #5 (METHODREF) classIndex #22 nameAndTypeIndex #23
method 1:                             Constant #22 (CLASS) nameIndex #29
method 1:                               Constant #29 (UTF8) utf8Value = java/io/PrintStream
method 1:                             Constant #23 (NAMETYPE) nameIndex #30 descriptorIndex #31
method 1:                               Constant #30 (UTF8) utf8Value = println
method 1:                               Constant #31 (UTF8) utf8Value = (Ljava/lang/String;)V
method 1:       18 : return              // Return void from method. Stack: ... -> [empty]
method 1:       exceptions [0]
method 1:       attributes [1]
method 1:         Attribute (StackMapTable) attributeNameIndex = 15
method 1:           Constant #15 (UTF8) utf8Value = StackMapTable
method 1:           entries [1]
method 1:             stackMapFrame type = 252 offsetDelta = 11
method 1:               locals [1]
method 1:                 VerificationTypeInfo type = 7
method 1:                   Constant #16 (CLASS) nameIndex #25
method 1:                     Constant #25 (UTF8) utf8Value = java/lang/String
attributes [0]
constantPool [32]
Constant #1 (METHODREF) classIndex #6 nameAndTypeIndex #17
  Constant #6 (CLASS) nameIndex #24
    Constant #24 (UTF8) utf8Value = java/lang/Object
  Constant #17 (NAMETYPE) nameIndex #10 descriptorIndex #11
    Constant #10 (UTF8) utf8Value = <init>
    Constant #11 (UTF8) utf8Value = ()V
Constant #2 (CLASS) nameIndex #18
  Constant #18 (UTF8) utf8Value = Test
Constant #3 (STRING) stringIndex #19
  Constant #19 (UTF8) utf8Value = .
Constant #4 (FIELDREF) classIndex #20 nameAndTypeIndex #21
  Constant #20 (CLASS) nameIndex #26
    Constant #26 (UTF8) utf8Value = java/lang/System
  Constant #21 (NAMETYPE) nameIndex #27 descriptorIndex #28
    Constant #27 (UTF8) utf8Value = out
    Constant #28 (UTF8) utf8Value = Ljava/io/PrintStream;
Constant #5 (METHODREF) classIndex #22 nameAndTypeIndex #23
  Constant #22 (CLASS) nameIndex #29
    Constant #29 (UTF8) utf8Value = java/io/PrintStream
  Constant #23 (NAMETYPE) nameIndex #30 descriptorIndex #31
    Constant #30 (UTF8) utf8Value = println
    Constant #31 (UTF8) utf8Value = (Ljava/lang/String;)V
Constant #6 (CLASS) nameIndex #24
  Constant #24 (UTF8) utf8Value = java/lang/Object
Constant #7 (UTF8) utf8Value = ONLY_DOT
Constant #8 (UTF8) utf8Value = Ljava/lang/String;
Constant #9 (UTF8) utf8Value = ConstantValue
Constant #10 (UTF8) utf8Value = <init>
Constant #11 (UTF8) utf8Value = ()V
Constant #12 (UTF8) utf8Value = Code
Constant #13 (UTF8) utf8Value = main
Constant #14 (UTF8) utf8Value = ([Ljava/lang/String;)V
Constant #15 (UTF8) utf8Value = StackMapTable
Constant #16 (CLASS) nameIndex #25
  Constant #25 (UTF8) utf8Value = java/lang/String
Constant #17 (NAMETYPE) nameIndex #10 descriptorIndex #11
  Constant #10 (UTF8) utf8Value = <init>
  Constant #11 (UTF8) utf8Value = ()V
Constant #18 (UTF8) utf8Value = Test
Constant #19 (UTF8) utf8Value = .
Constant #20 (CLASS) nameIndex #26
  Constant #26 (UTF8) utf8Value = java/lang/System
Constant #21 (NAMETYPE) nameIndex #27 descriptorIndex #28
  Constant #27 (UTF8) utf8Value = out
  Constant #28 (UTF8) utf8Value = Ljava/io/PrintStream;
Constant #22 (CLASS) nameIndex #29
  Constant #29 (UTF8) utf8Value = java/io/PrintStream
Constant #23 (NAMETYPE) nameIndex #30 descriptorIndex #31
  Constant #30 (UTF8) utf8Value = println
  Constant #31 (UTF8) utf8Value = (Ljava/lang/String;)V
Constant #24 (UTF8) utf8Value = java/lang/Object
Constant #25 (UTF8) utf8Value = java/lang/String
Constant #26 (UTF8) utf8Value = java/lang/System
Constant #27 (UTF8) utf8Value = out
Constant #28 (UTF8) utf8Value = Ljava/io/PrintStream;
Constant #29 (UTF8) utf8Value = java/io/PrintStream
Constant #30 (UTF8) utf8Value = println
Constant #31 (UTF8) utf8Value = (Ljava/lang/String;)V

 [code=plaintext]
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39653739
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новый Годимена переменных в java не хранятся после компиляции
хранятся только имена филдов

Поля это тоже переменные.
А Parameter.getName() данные из воздуха берёт. Впрочем, как и отладчик.
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39653762
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНовый Годимена переменных в java не хранятся после компиляции
хранятся только имена филдов

Поля это тоже переменные.

А Parameter.getName() данные из воздуха берёт. Впрочем, как и отладчик.

Поля это переменные класса/инстанса
переменные это более широкое понятие


приложи класс файл, вечером посмотрю, что там

отладчик может использовать атрибуты полей/методов/класса/etc
комрайлер может добавлять кастомные атрибуты в класс файл (которые jvm все равно не увидит)
из этих атрибутов можно вытащить иногда что-то полезное

но имен преременных в структуре класс файла не видел, на основании jvms 10
поля там есть, а других переменных нет

если найдешь имена переменных в спеке -- покажи
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39653766
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новый Годничего там не видно
только название переменной поменялось в коде
оптимизации вообще нет, инструкции те же самыеВы как-то странно смотрите.

При наличии отладочной информации jd-gui подставил в декомпилированный текст ровно те имена, которые были в исходном тексте.
Без отладочной информации jd-gui не ошибся с декомпиляцией, но вместо исходных имён использовал автогенерацию.

При этом, в обоих случаях сохранено имя статической константы, но там, где в исходном тексте эта константа используется, в декомпиляции - подставляется значение.
Таким образом, если есть класс, в котором определены только статические константы , то этот класс не требуется во время исполнения и его можно удалять сразу после компиляции.
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39653775
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новый Годесли найдешь имена переменных в спеке -- покажиВы как-то странно читаете (jvms8.pdf):
Код: plaintext
1.
4.7 Attributes
4.7.10 The SourceFile Attribute

4.7.11 The SourceDebugExtension Attribute

4.7.12 The LineNumberTable Attribute

4.7.13 The LocalVariableTable Attribute

4.7.14 The LocalVariableTypeTable Attribute
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39653777
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНовый Годничего там не видно
только название переменной поменялось в коде
оптимизации вообще нет, инструкции те же самыеВы как-то странно смотрите.

При наличии отладочной информации jd-gui подставил в декомпилированный текст ровно те имена, которые были в исходном тексте.
Без отладочной информации jd-gui не ошибся с декомпиляцией, но вместо исходных имён использовал автогенерацию.

При этом, в обоих случаях сохранено имя статической константы, но там, где в исходном тексте эта константа используется, в декомпиляции - подставляется значение.
Таким образом, если есть класс, в котором определены только статические константы , то этот класс не требуется во время исполнения и его можно удалять сразу после компиляции.
Basil A. SidorovНовый Годничего там не видно
только название переменной поменялось в коде
оптимизации вообще нет, инструкции те же самыеВы как-то странно смотрите.

При наличии отладочной информации jd-gui подставил в декомпилированный текст ровно те имена, которые были в исходном тексте.
Без отладочной информации jd-gui не ошибся с декомпиляцией, но вместо исходных имён использовал автогенерацию.

При этом, в обоих случаях сохранено имя статической константы, но там, где в исходном тексте эта константа используется, в декомпиляции - подставляется значение.
Таким образом, если есть класс, в котором определены только статические константы , то этот класс не требуется во время исполнения и его можно удалять сразу после компиляции.

статическая константа это entry в констат пуле
это не переменная
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39653852
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВы как-то странно читаете
жуть какая

и где там имена переменных?
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39653855
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

приложи класс файл
вечером все увидим
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39653862
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новый Годприложи класс файл
вечером все увидимА, мопвашуять, взять исходник из под спойлера, сохранить его в Test.java и два разА сделать "javc ..." - совсем никак?
Или вам без проекта на гитхабе и репозитория в maven-central вообще никак не работается?

P.S.
И что вы собрались увидеть, сверх того, что можно увидеть на двух скриншотах jd-gui?
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39653923
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНовый Годприложи класс файл
вечером все увидимА, мопвашуять, взять исходник из под спойлера, сохранить его в Test.java и два разА сделать "javc ..." - совсем никак?
Или вам без проекта на гитхабе и репозитория в maven-central вообще никак не работается?

P.S.
И что вы собрались увидеть, сверх того, что можно увидеть на двух скриншотах jd-gui?


чукча не читатель?

я выше вообще-то это уже сделал и распечатки приложил

версии компайлера и опции компиляции должны быть одни и те же
чтобы получить тот де самый класс файл
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39654107
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новый Годя выше вообще-то это уже сделал и распечатки приложил"Да пофигу нам ваши неувязочки" распечаточки
.
Я изначально привёл результат работы декомпилятора. Реального, а не наполовину написанного.
С отладочной информацией у декомпилятора есть имена переменных из исходного текста.
Без отладочной информации - только автогенерация, которая не совпадает с моими вкусами.
...
Рейтинг: 0 / 0
Как вывести имя переменной, переданной в метод
    #39654113
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНовый Годя выше вообще-то это уже сделал и распечатки приложил"Да пофигу нам ваши неувязочки" распечаточки
.
Я изначально привёл результат работы декомпилятора. Реального, а не наполовину написанного.
С отладочной информацией у декомпилятора есть имена переменных из исходного текста.
Без отладочной информации - только автогенерация, которая не совпадает с моими вкусами.

хрень какая-то

я что, результат работы декомпайлера приводил?

только дамп и дисассемблер
они реальные и полные
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Как вывести имя переменной, переданной в метод
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]