Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在访问对象类';Java代码中的s const字段_Java_Kotlin - Fatal编程技术网

为什么在访问对象类';Java代码中的s const字段

为什么在访问对象类';Java代码中的s const字段,java,kotlin,Java,Kotlin,科特林酒店 从Java作为Obj.CONST 但在类似的情况下,它得到了错误 object StringUtils { const val UNESCAPE_HTML4 = "... ..." ...... } 在Java代码中 return StringUtils.UNESCAPE_HTML4; 出错 'UNESCAPE_HTML4' has private access in com.data.utils.StringUtils 必须使用StringUtils.INST

科特林酒店

从Java作为
Obj.CONST

但在类似的情况下,它得到了错误

object StringUtils {
    const val UNESCAPE_HTML4 = "... ..."
    ......
}
在Java代码中

return StringUtils.UNESCAPE_HTML4;
出错

'UNESCAPE_HTML4' has private access in com.data.utils.StringUtils
必须使用
StringUtils.INSTANCE.getUNESCAPE\u HTML4()
则无错误

但是,单击
UNESCAPE\u HTML4
确实可以正确打开编译后的代码

唯一的区别是,该对象StringUtils与已添加到项目build.gradle中的库依赖项不同

有人也看到这种类型的错误吗

这里是Java端的一个测试函数,它尝试从依赖库访问这些函数、属性

public class DataWrapper {
    ... ...
    public void test_strUtil() {

    /*
     * For example, the string "<Français>"
     * will become "<Franais>"
     */

    String s = StringUtils.unescapeHtml4("<Français>");



    int s2 = Constants.CONTROLLER_FANTASY_SPORTS_STREAM;

    String[][] arr = EntityArrays.BASIC_UNESCAPE();

    Log.i("+++", "+++ test_strUtil(), after DataPlay.init(), unescapeHtml4:"+s+", empty:"
          +StringUtils.EMPTY+" --- s2:"+s2);

    for (int i=0; i<arr.length; i++) {
        String[] arrRow = arr[i];
        for (int j=0; j< arrRow.length; j++) {
            Log.w("+++", "+++ arrRow["+i+"]["+j+"]:"+arrRow[j]);
        }
    }
}
公共类数据包装器{
... ...
公共空隙试验{
/*
*例如,字符串“<;Franç;ais>;”
*将成为“法国人”
*/
字符串s=StringUtils.unescapethml4(<;Fran&;ccedil;ais>;);
int s2=常量。控制器\u幻想\u运动\u流;
字符串[][]arr=EntityArrays.BASIC_UNESCAPE();
Log.i(“+++”,“+++test_strUtil(),在DataPlay.init()之后,unescapethml4:“+s+”,空:”
+StringUtils.EMPTY+“--s2:+s2);
对于(int i=0;i

或“拥有私人访问权…”

但是,当单击被投诉的函数或属性时,它确实会打开正确的编译文件

当它运行时,打印输出显示正确调用的函数

com.test.debug I/+++: +++ test_strUtil(), after DataPlay.init(), 
               unescapeHtml4:&lt;Fran&ccedil;ais&gt;, empty: --- s2:3
com.test.debug W/+++: +++ arrRow[0][0]:&quot;
    +++ arrRow[0][1]:"
    +++ arrRow[1][0]:&amp;
    +++ arrRow[1][1]:&
    +++ arrRow[2][0]:&lt;
    +++ arrRow[2][1]:<
    +++ arrRow[3][0]:&gt;
    +++ arrRow[3][1]:>
com.test.debug I/+++:+++test_strUtil(),在DataPlay.init()之后,
unescapethl4:Franç;ais,空:--s2:3
com.test.debug W/+++:+++arrRow[0][0]:“
+++arrRow[0][1]:“
+++arrRow[1][0]:&;
+++arrRow[1][1]:&
+++arrRow[2][0]:
+++阿罗[2][1]:<
+++arrRow[3][0]:
+++arrRow[3][1]:>

更奇怪的是,来自同一个库的另一个函数和属性通过不同对象类的const或@JvmStatic公开,它们不会受到IDE的抱怨。

这里有几点:

  • 该错误仅在IDE中出现,而不是在编译期间出现
  • 仅当类位于库中时发生(我尝试在同一项目中重现类的问题,它按预期工作)

  • 如果清理/重建没有帮助,删除整个项目并再次导入它应该会有帮助。

    尝试重现您的问题,但似乎一切正常。如何构建此“库”是你的吗?@Alexey,这个库来自另一个库项目,发布到maven,并在这个项目中添加了对它的依赖性。你能重建这个库吗?因为它应该可以工作,我的假设是它是由一个旧的Kotlin编译器构建的,大约1.0I不断地重建,我的AndroidStudio是3.1.3,Kotlin是1.2.60Ok,所以你忘了重新编译我认为问题不在于代码,而在于IDE。愚蠢的问题,但是你有没有尝试清理项目?IntelliJ保留内部缓存。
    com.test.debug I/+++: +++ test_strUtil(), after DataPlay.init(), 
                   unescapeHtml4:&lt;Fran&ccedil;ais&gt;, empty: --- s2:3
    com.test.debug W/+++: +++ arrRow[0][0]:&quot;
        +++ arrRow[0][1]:"
        +++ arrRow[1][0]:&amp;
        +++ arrRow[1][1]:&
        +++ arrRow[2][0]:&lt;
        +++ arrRow[2][1]:<
        +++ arrRow[3][0]:&gt;
        +++ arrRow[3][1]:>