こんにちは@eakbasと@Favoniusご回答ありがとうございます。
私はついに解決策を得ました、多分それは最善ではありませんが、少なくとも私にとってはうまくいきます。
前に述べたように、cssファイルを分析するために、フルートライブラリを使用してパッケージorg.w3c.sacパッケージのDocumentHandlerクラスを実装しました。
そこで、「property」メソッドを実装しました。このメソッドには、プロパティ名、LexicalUnitオブジェクト、およびプロパティに重要なステートメントがあるかどうかを示すブール値の3つのパラメーターがあります。
public void property(String property, LexicalUnit lexicalUnit, boolean important)
特定のプロパティが見つかった行番号が必要なため、検索を行ったところ、fluteがLexicalUnitインターフェイスを実装するために使用するクラスが行番号(LexicalUnitImp)を保持していることがわかりました。そこで、リフレクションを使用してキャストを作成しました。 LexicalUnitインターフェイスから1つのLexicalUnitImpオブジェクトへ。
Class<?> clazz = ClassUtils.getClass("org.w3c.flute.parser.LexicalUnitImpl");
Object lexicalObject = clazz.cast(lexicalUnit);
Integer line = (Integer)MethodUtils.invokeMethod(lexicalObject, "getLineNumber", null, null);
LexicalUnitImplクラスは「保護」されており、従来の方法でキャストできないため、この方法で実行しました。
class LexicalUnitImpl implements LexicalUnit
注:クラスClassUtilsおよびMethodUtilsは、commons-beanutilsapacheライブラリの一部です。