List<T>来自System.Collections.Generic所有事情Stack<T>,以及更多 - 它们基于相同的基础数据结构.在什么条件下选择是否正确Stack<T>?
我正在使用 JNI 在 Kotlin 中为 C++ 库创建包装器。为了在 C++ 库中实现一个属性,我需要将属性的 getter 和 setter标记为externalcreate ,getX并将setX方法标记为native,如 Kotlin 文档中所述。
虽然这按预期工作,但这也会为 property 生成一个支持字段,这在我的情况下没有用,因为该值仅位于本机端。
例如,我有以下类,其中包含一个外部属性:
class Something {
var name: String
external get
external set
}
Run Code Online (Sandbox Code Playgroud)
@MetadataIntellIJ中的“Kotlin Bytecode”工具在Java中反编译生成的字节码(去掉注解)如下:
public final class Something {
@NotNull
private String name;
@NotNull
public final native String getName();
public final native void setName(@NotNull String var1);
}
Run Code Online (Sandbox Code Playgroud)
如您所见,存在不需要的name字段。有没有办法摆脱这个?
举个例子,假设我正在构建一个简单的社交网络。我目前有两项服务:
Identity,管理用户、他们的个人数据(电子邮件、密码哈希等)及其公共配置文件(用户名)和身份验证Social,管理用户的帖子、朋友和动态该Identity服务可以使用其 API 提供用户的公共资料/api/users/{id}:
// GET /api/users/1 HTTP/1.1
// Host: my-identity-service
{
"id": 1,
"username": "cat_sun_dog"
}
Run Code Online (Sandbox Code Playgroud)
该Social服务可以在以下位置发布其 API 的帖子/api/posts/{id}:
// GET /api/posts/5 HTTP/1.1
// Host: my-social-service
{
"id": 5,
"content": "Cats are great, dogs are too. But, to be fair, the sun is much better.",
"authorId": 1
}
Run Code Online (Sandbox Code Playgroud)
这很好,但我的客户端(一个 Web 应用程序)希望显示带有作者姓名的帖子,并且它最好在一个 REST 请求中接收以下 JSON 数据。
{
"id": 5,
"content": "Cats are great, dogs are too. …Run Code Online (Sandbox Code Playgroud)