小编Ash*_*nxy的帖子

如何修复 Android Studio 中的“模块 java.base 不会“打开 java.io”到未命名模块的“错误”?

背景

  1. 我在 android studio 开始了我的第一个项目,以熟悉 Android 编程。
  2. 我正在关注本教程,其中
  • 我创建了一个新项目 Empty Activity,没有任何更改
  • 它应该模拟一个显示“Hello World”消息的简单应用程序

问题描述 但是每次我尝试运行和构建(我现在想要模拟器)时,我都会收到以下错误消息。

Unable to make field private final java.lang.String java.io.File.path accessible:
Unable to make field private final java.lang.String java.io.File.path
accessible: module java.base does not "opens java.io" to unnamed module @42760a00
Run Code Online (Sandbox Code Playgroud)

这是我的配置设置

  1. Android Gradle 插件版本:4.2.1
  2. Gradle 版本:7.0.1(更改为解决我在同步 Gradle 时遇到的另一个问题(“Gradle 同步失败:不支持的类文件主要版本 60”)和基于此论坛上的讨论,如下所述)

Andrey Dernov 评论 2021 年 4 月 14 日 00:18 请使用 Gradle 7.0 或低于 16 版本的 JDK 来导入和构建项目(设置(macOS 上的首选项)| 构建、执行、部署 | 构建工具 …

java android android-studio

10
推荐指数
15
解决办法
1万
查看次数

我们可以在 golang android 操作系统中打开一个带有 URL 的浏览器吗?

从事 Go 项目并使用gomobile生成 .apk 文件。我正在尝试使用传递的 URL 在 go 代码中打开浏览器。我知道go支持在Windows和Linux等不同操作系统中运行CMD命令。想知道是否有任何代码也支持 Android 操作系统。换句话说,在下面的代码中我应该有什么

案例“安卓”:

func openbrowser(url string) {
    var err error

    switch runtime.GOOS {
    case "linux":
        err = exec.Command("xdg-open", url).Start()
    case "windows":
        err = exec.Command("rundll32", "url.dll,FileProtocolHandler", url).Start()
    case "darwin":
        err = exec.Command("open", url).Start()
    default:
        err = fmt.Errorf("unsupported platform")
    }
    if err != nil {
        log.Fatal(err)
    }

}
Run Code Online (Sandbox Code Playgroud)

android go gomobile

5
推荐指数
1
解决办法
929
查看次数

在C++中定义带有函数参数的结构体方法

查看 C++ 接口代码。我无权访问实施。我做了一个小例子来展示这种行为。

struct MessageInfo{
    
    MessageInfo() : length{}, from{}, to{} {}
    
    MessageInfo(int _length, string _from, string _to) : length{_length}, from{_from}, to{_to} 
    {}

    int length;
    string from;
    string to;
      
    using IsEnumerableTag = void;
    template<typename F>
    void enumerate(F& fun) {
        fun(this->length);
        fun(this->from);
        fun(this->to);
     }
};
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下这个结构定义中枚举结构函数成员的用法吗?

根据我的理解,该结构中的枚举可以采用函数类型作为输入参数(函数指针?)

  1. 这是否意味着每当我们创建 MessageInfo 结构体的对象时,我们都可以像下面这样调用这个方法?
  2. 如何定义函数类型,换句话说,我应该使用什么来代替“???” 在下面的代码中?
  3. 这种编码模型(更具体地说是枚举方法)有什么优点?
MessageInfo messageInfo (1000, "A", "B");
    
messageInfo.enumerate<???>(printFrom(messageInfo.From);
      
void printFrom(string f) {
     cout<<"the msgInfo is sent from "<<  f<<endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ struct function-pointers

2
推荐指数
1
解决办法
158
查看次数

如何在无向图中找到最短路径和最长路径?

我有一个关于如何在具有简单边(其中边没有权重)的无向图中找到最短路径和最长路径的一般问题。

我们需要使用DFS算法来寻找图中的最长路径,而我们需要使用BFS算法来寻找图中的最短路径,这是正确的结论吗?

我明白,当我们使用 BFS 时,我们会逐层访问节点,我们可以使用它来查找最短路径(这可能就是为什么 Dijkstra 是基于 BFS 或类似于 BFS 的原因)。但我不知道我们如何有效地使用 BFS 找到最长路径。有人可以详细说明吗?

另外,我知道使用 DFS 查找最长路径可能效率不高,我们可能需要使用动态编程思想来提高时间复杂度,但为了本次讨论的功能,我们忽略它。

algorithm graph breadth-first-search depth-first-search longest-path

1
推荐指数
1
解决办法
5257
查看次数

C++ 多次分配的成本有多大?

我想知道实用函数中内存分配过程的成本有多大。例如下面的实现有很大的区别吗?

string method_A (string inp) {
   auto        num_fillers = inp.length() - 4;
   string filler(num_fillers, '-');
   string res = filler + inp.substr(num_fillers);
   return res;
}

string method_B (string inp) {
  const int expect_len =4;
  auto        num_fillers = inp.length() - expect_len;
  string res;
  res.reserve(num_fillers + expect_len);
  res.assign(num_fillers, '-');
  res+= inp.substr(num_fillers);
  return res;
}
Run Code Online (Sandbox Code Playgroud)

使用 method_B 代替 method_A 有什么好处吗?各自的优点和缺点是什么?

分配一次内存并用“+=”操作填充字符串是否比method_A中的做法有更好的性能?

c++ string

1
推荐指数
1
解决办法
141
查看次数