[英]jruby call method from super java class
我正在嘗試在jruby中創建一個子類,該子類從超級java類屬性中覆蓋keys方法,這是因為我想通過key對屬性類中的條目進行排序:
class SortedProperties < java.util.Properties
def keys
keysEnum = super().keys()
keyList = java.util.Vector.new
keysEnum.elements.each do |element|
puts element.to_s
keyList.add(element.to_java(:String))
end
java.util.Collections.sort(keyList)
puts keyList.elements().to_s
return keyList.elements()
end
end
我肯定在做超級語句有問題,但是我不知道是什么。 進行了大量搜索,但是找不到任何指向我指向超類屬性中方法keys()正確調用的內容。
您需要讓您的大腦“忘記” Java樣式的super
語法,而只需使用Ruby方式即可,例如
class SortedProperties < java.util.Properties
def keys
keyList = java.util.Vector.new
super.each do |element|
keyList.add(element.to_java(:String))
end
java.util.Collections.sort(keyList)
return keyList.elements()
end
end
props = java.util.Properties.new
props.setProperty 'bbb', 'B'
props.setProperty 'aaa', 'A'
props.setProperty 'ccc', 'C'
props.store java.lang.System.out, ' raw-properties'
props = SortedProperties.new
props.setProperty 'bbb', 'B'
props.setProperty 'aaa', 'A'
props.setProperty 'ccc', 'C'
props.store java.lang.System.out, ' sorted-properties'
調用super
已經返回了一個結果,並且它可能已經由JRuby進行了Ruby轉換,即使不是Java Enumeration/Collection
都可以使用Ruby Enumerable
(或至少具有each
方法)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.