Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

const-class support #146

Closed
tiann opened this issue Sep 28, 2019 · 0 comments
Closed

const-class support #146

tiann opened this issue Sep 28, 2019 · 0 comments

Comments

@tiann
Copy link

tiann commented Sep 28, 2019

I want to generate a class like this:

public class Generated {
    public static void test() {
        Class<?> clazz = Generated.class; // how to access the generated class's class?
    }
}

I have read the source but i cannot found a way to do operation: Generated.class

How can i do this ?

@tiann tiann changed the title How to access the class of generated Class? const-class support Sep 28, 2019
kkoser added a commit to kkoser/dexmaker that referenced this issue Nov 27, 2019
…din#146)

We have had support for the const-class operation, but it was only possible to
fill a local with the value of a Class object you could reference in the geneeration
context. This meant that it was not possible to generate a reference to a generated
class, as it did not exist in the class loader until after the generation was finished
and the new class loader could be used.

The real issue here is the restriction of the loadConstant() method, which requires an
actual Class object. This class object gets turned into a string internally for code
generation, and so we don't actually need a real class to fill the variable value
correctly. Using a TypeId will still get converted to a ConstantInsn under the hood,
and the value will be assigned correctly.
kkoser added a commit that referenced this issue Dec 2, 2019
Support generating locals that reference generated class types (#146)
@tiann tiann closed this as completed May 19, 2020
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant