我正在尝试模拟另一种晦涩的编程范例中使用的一种指针,因此我可以将一些代码移植到 Java。另一种语言不是面向对象的,而是受到 Pascal 的粗略启发。
在原始语言中,我们可以编写这样的代码。首先,使用文本。
// Start with text.
Text myVar = "Bonjour"
Pointer myPointer = ->myVar // Referencing a string variable, storing the reference in another variable of type `Pointer`.
Message( myPointer-> ) // Dereferencing the pointer, to retrieve `myVar`, and pass the string to a command `Display` that displays the message on screen in a dialog box.
然后,切换到数字。
// Switch gears, to work with an number.
Integer vResult = ( Random % ( vEnd - vStart + 1 ) ) + vStart // Generate random number.
myPointer = ->vResult // The same pointer now points to numeric variable rather than a textual variable.
我们可以通过变量名的文本来分配一个指针。
myPointer = Get pointer( "var" + String($i) ) // Generate pointer variable named `var1`, or `var2`, etc.
我们可以向指针询问一个代码号,该代码号表示它所指向的值的数据类型(所指对象的数据类型)。
typeCodeNumber = Type( myPointer ) // Returns 11 for an integer, 22 for text.
在另一种语言中,编译器确实提供了类型安全。但是当以这种方式使用指针时,我们牺牲了类型安全。编译器会发出警告,指出代码使用在类型方面不明确。
我移植此代码的想法是定义一个XPointer类以及为XText和等类型定义的类XInteger。
我需要持有对十几种特定已知类型中任何一种的对象的引用,包括对另一个指针的引用。我可以硬编码十几种类型,不需要对所有类型开放。
这十几种类型不共享接口或抽象类,除了Object. 即使它们确实共享一个接口/超类,我也不希望它们作为超类返回,而是作为它们原来的具体类返回。当他们进入指针时,他们也应该从指针中出现。
我目前的计划是XPointer用一对引用和取消引用方法在 Java 中定义一个类:
XPointer::ref( x )在哪里传递, 或class 的对象Dog,甚至是另一个对象。TruckSculptureXPointer
XPointer::deref ⇒ x其中 x 是一个被识别为其原始类型的对象,a Dog, aTruck或 aSculpture甚至另一个XPointer对象,而不仅仅是一个Object对象。
➥ 有没有办法做这个Java?也许与泛型?
➥ 如果在 Java 中不可能,我可以不情愿地切换到 Kotlin。这个指针功能可以在JVM上运行的Kotlin中完成吗?
当年话下
ITMISS
德玛西亚99
相关分类