gpt4 book ai didi

java - 不同包中的两个导出类可以在不公开其成员的情况下进行交互吗?

转载 作者:行者123 更新时间:2023-12-01 22:57:47 27 4
gpt4 key购买 nike

我在开发一个库时偶然发现了这个问题,并且已经尝试了几个小时来寻找解决方案。我不确定这是否可能。我有一个模块 com.gui,其中包含一个名为 com.gui.componentscom.gui.constraints 的包com.gui.animation。我想实现基于文本的组件并设置一个名为 com.gui.text 的包。

我在该包 (com.gui.text) 中有一个 Font 类,该类应该是公共(public)的,以便用户可以将其传递到文本组件之一。但是,我正在努力解决如何将纹理 id 等数据传输到文本组件而不将变量公开(或实现公共(public) getter)的问题。我搞砸了不导出文本包并在文本组件类内部扩展 Font 类,但这似乎是一个次优的解决方案,我不太喜欢它的感觉。

这是我的项目的直观层次结构:

src/com.gui
--component -> exported
----UITextComponent

--text
----mesh
------Texture

----font -> exported
------Font // contains a Texture object which should stay invisible to the user

--XXX // other packages

我在这里遗漏了任何明显的东西还是目前无法做到这一点?

最佳答案

如果你想疯狂,你可以执行以下操作(不推荐)

在你的 Font 类中有一个像这样的方法:

public class Font {

private String textureId;

...

public void setTextureId(Texture texture) throws Exception {
if (texture == null) return;

Field field = texture.getClass().getDeclaredField("textureId");
if (field == null) return;
field.setAccessible(true);

textureId = String.valueof(texture.get(font));
}
}

同样,这不是推荐的方法,但它是一种通过现有布局获得所需内容的方法。此外,您还必须添加一些更多的验证检查。

关于java - 不同包中的两个导出类可以在不公开其成员的情况下进行交互吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58432348/

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