gpt4 book ai didi

java - 反射(reflection):如何调用隐藏的父类(super class)构造函数?

转载 作者:行者123 更新时间:2023-11-30 09:10:04 30 4
gpt4 key购买 nike

重新编辑...

我想使用被“@hide”Android 标签(或其他标签)隐藏的父类(super class)构造函数。

我要扩展一个已经扩展了两次的类(在 Android 操作系统中)。我想创建自己的子类(即在 Android 操作系统之外)。示例子类,取自 Android 资源:

public class WifiP2pDnsSdServiceInfo extends WifiP2pServiceInfo {
...
private WifiP2pDnsSdServiceInfo(List<String> queryList) {
super(queryList); // <-- this is what I'm trying to do, too
}

public static WifiP2pDnsSdServiceInfo newInstance(String instanceName,
String serviceType, Map<String, String> txtMap) {
...
ArrayList<String> queries = new ArrayList<String>();
...
return new WifiP2pDnsSdServiceInfo(queries);
}
}

父类(super class)看起来像这样:

public class WifiP2pServiceInfo implements Parcelable {
...
// this is marked as @hidden therefore inaccessible!
protected WifiP2pServiceInfo(List<String> queryList) {
if (queryList == null) {
throw new IllegalArgumentException("query list cannot be null");
}
mQueryList = queryList;
}
}

我想做的就是制作另一种 WifiP2pServiceInfo,类似于上面的 WifiP2pDnsSdServiceInfo 示例。我不能只继承并调用 super(),因为父类(super class)构造函数被 Android 的“@hide”标记,因此对于非系统程序员来说,如果没有反射就无法使用。

所以我的问题是如果我不能通过普通的 super() 调用访问/调用父类(super class)构造函数?反射在这里应该派上用场,但我在 Java 编程方面不是很有经验。

最佳答案

经过一些研究,我可以自己回答这个问题。

简短回答:我不能这样做,因为如果父类(super class)构造函数被保护隐藏,即使我找到了如何通过反射调用构造函数的方法,编译器也会报错。

长答案:事实证明“取消隐藏”这些东西并不那么复杂。正在关注this tutorial我可以根据自己的需要扩展类(class)。

看到了吗?很多噪音都是徒劳的,这就是我一直在寻找的答案。

关于java - 反射(reflection):如何调用隐藏的父类(super class)构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22698501/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com