具有隐藏构造函数的抽象类的实例

安德烈亚斯

我需要使用隐藏的构造函数创建一个抽象类的实例,该类如下所示:

public abstract class TestClass {
    /**
    * @hide
    */
    public TestClass() {
    }
}

创建一个具体的类是行不通的,因为构造函数是不可见的,并且通过反射API调用构造函数也不起作用,因为该类是抽象的。

我需要创建一个android.print.PrintDocumentAdapter.LayoutResultCallback的实例

用户名

我遇到了完全相同的问题(甚至对于完全相同的类),并且我有一个更好的解决方案,而不是像其他答案中建议的那样用framework.jar替换android.jar。

该解决方案使用dexmaker库(您将需要dexmaker.1.4.jar和dexmaker-dx.1.4.jar)。这是一个库,可在运行时为Dalvik VM(Android中使用的VM)生成字节码。

该库有一个名为的类ProxyBuilder,可为抽象类生成代理代理是扩展抽象类并通过将方法分派到java.lang.reflect.InvocationHandler您指定的实例来实现方法的对象

ProxyBuilder与几乎相同java.lang.refect.Proxy,除了java.lang.refect.Proxy仅适用于接口,而dexmaker的ProxyBuilder适用于抽象类,这就是我们需要解决的问题。

该代码是所有的:

public static PrintDocumentAdapter.LayoutResultCallback getLayoutResultCallback(InvocationHandler invocationHandler,
                                                                                File dexCacheDir) throws  IOException{
    return ProxyBuilder.forClass(PrintDocumentAdapter.LayoutResultCallback.class)
            .dexCache(dexCacheDir)
            .handler(invocationHandler)
            .build();
}

回调逻辑在invocationHandler您提供的中实现。cacheDir是dexmaker可以存储一些文件的目录。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Scala中具有构造函数参数的抽象类

来自分类Dev

具有工厂构造函数的抽象类的好处?

来自分类Dev

抽象类与私有构造函数

来自分类Dev

构造函数需要参数的抽象类与具有抽象get-only属性的抽象类之间的区别

来自分类Dev

具有抽象变量和子构造函数的抽象类;斯卡拉

来自分类Dev

具有构造函数的抽象类,强制继承的类对其进行调用

来自分类Dev

具有两个构造函数的抽象类C ++

来自分类Dev

C#中具有多个构造函数的抽象类

来自分类Dev

在具有公共构造函数而不是受保护构造函数的抽象类中,有什么要点吗?

来自分类Dev

如何在抽象类中具有函数以TypeScript返回子类的实例

来自分类Dev

Java抽象类,抽象构造函数

来自分类Dev

为什么即使我的抽象类具有受保护的构造函数,也要创建默认构造函数?

来自分类Dev

为什么抽象类可以有构造函数?

来自分类Dev

Scala抽象类中的私有构造函数?

来自分类Dev

继承没有任何构造函数的抽象类

来自分类Dev

Scala抽象类中的私有构造函数?

来自分类Dev

从抽象类派生的类构造函数

来自分类Dev

将具有unique_ptr的类的构造函数作为成员复制到抽象类

来自分类Dev

抽象类可以在C ++ 11中具有构造函数和私有成员吗

来自分类Dev

抽象类的Java构造函数

来自分类Dev

在抽象类中使用构造函数

来自分类Dev

调用抽象类的构造函数

来自分类Dev

Java抽象类构造函数

来自分类Dev

在抽象类中调用构造函数

来自分类Dev

抽象类-超级构造函数(Java)

来自分类Dev

在抽象类中调用构造函数

来自分类Dev

抽象类的子类的Java构造函数

来自分类Dev

抽象类构造函数可以实例化新对象吗?

来自分类Dev

具有抽象类的构造方法-不接受特定的构造方法

Related 相关文章

  1. 1

    Scala中具有构造函数参数的抽象类

  2. 2

    具有工厂构造函数的抽象类的好处?

  3. 3

    抽象类与私有构造函数

  4. 4

    构造函数需要参数的抽象类与具有抽象get-only属性的抽象类之间的区别

  5. 5

    具有抽象变量和子构造函数的抽象类;斯卡拉

  6. 6

    具有构造函数的抽象类,强制继承的类对其进行调用

  7. 7

    具有两个构造函数的抽象类C ++

  8. 8

    C#中具有多个构造函数的抽象类

  9. 9

    在具有公共构造函数而不是受保护构造函数的抽象类中,有什么要点吗?

  10. 10

    如何在抽象类中具有函数以TypeScript返回子类的实例

  11. 11

    Java抽象类,抽象构造函数

  12. 12

    为什么即使我的抽象类具有受保护的构造函数,也要创建默认构造函数?

  13. 13

    为什么抽象类可以有构造函数?

  14. 14

    Scala抽象类中的私有构造函数?

  15. 15

    继承没有任何构造函数的抽象类

  16. 16

    Scala抽象类中的私有构造函数?

  17. 17

    从抽象类派生的类构造函数

  18. 18

    将具有unique_ptr的类的构造函数作为成员复制到抽象类

  19. 19

    抽象类可以在C ++ 11中具有构造函数和私有成员吗

  20. 20

    抽象类的Java构造函数

  21. 21

    在抽象类中使用构造函数

  22. 22

    调用抽象类的构造函数

  23. 23

    Java抽象类构造函数

  24. 24

    在抽象类中调用构造函数

  25. 25

    抽象类-超级构造函数(Java)

  26. 26

    在抽象类中调用构造函数

  27. 27

    抽象类的子类的Java构造函数

  28. 28

    抽象类构造函数可以实例化新对象吗?

  29. 29

    具有抽象类的构造方法-不接受特定的构造方法

热门标签

归档