- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将从 ceylon.interop.java { CeylonList } 派生的 ceylon 类设置为 ceylon 模块外部的 java 单元(用 ceylon 术语来说,这将被称为模块,但 java 还没有)包含这个派生的 Ceylon 类。
运行.ceylon:
import java.util {
JList=List
}
import ceylon.interop.java {
CeylonList
}
// CL is deliberately annotated as 'shared' - this is the crucial point !!
shared class CL(JList<out Integer> jil) extends CeylonList<Integer>(jil) {}
为了使导入的模块在 java 端可见,我在模块描述符中将导入的模块注释为“共享”。
模块.ceylon:
native ("jvm") module com.example.simple "1.0.0" {
shared import "java.base" "8";
shared import ceylon.collection "1.2.2";
shared import ceylon.interop.java "1.2.2";
}
但是编译器仍然报错:
source/com/example/simple/run.ceylon:18: error: supertype of type 'CL' that is visible outside this module comes from an imported module that is not re-exported: 'Collection<Integer>' involves an unexported type declaration
shared class CL(JList<out Integer> jil) extends CeylonList<Integer>(jil) {}
^
source/com/example/simple/run.ceylon:18: error: supertype of type 'CL' that is visible outside this module comes from an imported module that is not re-exported: 'List<Integer>' involves an unexported type declaration
shared class CL(JList<out Integer> jil) extends CeylonList<Integer>(jil) {}
^
source/com/example/simple/run.ceylon:18: error: supertype of type 'CL' that is visible outside this module comes from an imported module that is not re-exported: 'Correspondence<Integer,Integer>' involves an unexported type declaration
shared class CL(JList<out Integer> jil) extends CeylonList<Integer>(jil) {}
^
source/com/example/simple/run.ceylon:18: error: supertype of type 'CL' that is visible outside this module comes from an imported module that is not re-exported: 'Ranged<Integer,Integer,List<Integer>>' involves an unexported type declaration
shared class CL(JList<out Integer> jil) extends CeylonList<Integer>(jil) {}
解决方案应该是重新导出 ceylon.language
...
shared import ceylon.language "1.2.2";
...
但一方面,ceylon.language 根本不允许导入,因此无法对其进行注释或重新导出。
另一方面,我无法发现任何“...未重新导出的导入模块...”,因为所有导入的模块都被注释为共享。
旁白:然后将 run.ceylon 中的类 CL 导入并在 Use.java 中使用
使用.java:
package some.other.package
// And thus some.other.module if there were
import com.example.simple.*;
import java.util.* ;
public class Use{
public static void main (String[] args) {
LinkedList ll = new LinkedList();
ll.add(1);
ll.add(2);
CL c = new CL(ll);
}
}
现在的问题是(引用上面的错误信息),1. 类型“CL”的哪种父类(super class)型在此模块外部可见并且来自未重新导出的导入模块,以及2.如何重新导出?
最佳答案
在 Ceylon 1.2.2 中,您的示例将不起作用,因为 Java 代码无法使用同一模块中的 Ceylon 声明。
在尚未发布的 Ceylon 1.2.3 中,应该支持此功能,但我遇到了与您相同的错误,并且示例代码没有发现任何问题。
关于java - Ceylon 和 Java 之间的互操作性 : How to share an import from 'ceylon.language' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38795586/
我正在玩这种漂亮的语言,并看到了一个名为noop的函数。 正如文档所述,它是一个无效的函数,什么也不做! 那么,为什么我要使用什么都不做的功能呢?是否要在程序集中添加“Nop”(用于管道等),但这不是
在 Ceylon 中是否有一种简单的方法来创建一个无限迭代器,它通过调用相同的给定无参数函数来生成每个元素?换句话说,语言模块是否提供与 Java 8 的 Stream.generate(Suppli
我希望以下内容能够发挥作用: void takeOnlyStrings(String* s) { print(s); } {String|Integer*} ab = {"Hi", 1}; ta
在命令行 Java 应用程序中,您可以通过 args 参数获取参数: public static void main(String[] args) { 如何在 ceylon 做类似的事情?我尝试复制
我有一个通用函数,它需要创建一个元组来调用一个我不知道其参数类型的函数。 像这样(除了这个例子中的 array 是由一些外部代码创建的,所以我不能直接应用该函数): Result apply(
假设我在 ceylon 有几个嵌套的 for 循环。如何摆脱所有循环: variable Integer? something = null; for (i in 0:3) { for (j in
如何仅使用 ceylon 命令行工具而不是 ant 将 ceylon 发行版设置和构建为混合 java 和 ceylon 项目? 我假设已经按照 https://github.com/ceylon/c
我已阅读walkthrough about sequences但我真的不明白为什么有一种方法可以同时定义文字可迭代和文字序列。 {String+} iterable = {"String1", "St
如何在 ceylon 中实现“monadic for/yield”语法,例如对于蹦床,因为 Ceylon 不执行尾部调用优化。 for/yield-syntax 需要引入新的变量名称,而使用类似树的语
我正在尝试将从 ceylon.interop.java { CeylonList } 派生的 ceylon 类设置为 ceylon 模块外部的 java 单元(用 ceylon 术语来说,这将被称为模
我想要这样的东西: [String, Integer] values = SomeClass("Hi", 1).values(); [Boolean, Float] others = SomeClas
我在 ceylon 有一个序列,我想创建一个新序列,其中一个元素根据索引替换为其他元素: [String*] strings = ["zero", "one", "two"]; value index
我想要这样的东西: [String, Integer] values = SomeClass("Hi", 1).values(); [Boolean, Float] others = SomeClas
是否有一种简单的方法可以迭代 Ceylon 中类的所有枚举实例? 就像 Java 枚举的 values() 一样? abstract class Suit() of hearts | diamonds
我在递增可变整数时遇到了一些问题。这段代码: variable Integer myInteger = -1; Integer getInteger () { myInteger = myIn
有没有办法一次性初始化一个顺序值而不是? 比如,我可以声明它,然后使用 for 循环逐步填充它吗? 由于这一切都可能发生在类体内,因此一旦类实例构造阶段完成,Sequential 值的真正不变性就可以
我尝试使用 Ceylon 编译器版本 1.2 编译源代码,而我之前使用 Ceylon 编译器版本 1.1 成功编译过该源代码,但收到以下错误消息: source/com/example/hellowo
我尝试使用 Ceylon 和 Eclipse。我已经安装了JDK。我的计算机中有 Java 版本 7 和 8。 Eclipse的配置看起来不错,我可以看到Ceylon透视图,创建项目,我有一个Ceyl
有没有一种方法可以“洗牌”一个Iterable(或Sequence),以便元素随后随机排序,类似于Java的Collections.shuffle() ?我查看了 Iterable、Collectio
我正在尝试创建一个满足接口(interface) Iterable 的类“Gprogram” (这样我就可以在我的 Gprogram 中迭代 Gcommand)。但是,我只能使用类型 Iterable
我是一名优秀的程序员,十分优秀!