を実装している場合、質問が見つける方法がある場合は、クラスがマーカーインターフェイスクラスは、私はインタビューの中でこの質問を受けたマーカーインターフェイス
を実施しているかどうかを確認する方法
ある方法を特定します、マーカーインタフェースが
を実装している場合、質問が見つける方法がある場合は、クラスがマーカーインターフェイスクラスは、私はインタビューの中でこの質問を受けたマーカーインターフェイス
を実施しているかどうかを確認する方法
ある方法を特定します、マーカーインタフェースが
使用Class#getInterfaces()にこのような何かを実行することができます:
は、このオブジェクトによって表されるクラスまたはインタフェース が実装するインタフェースを決定します。
このオブジェクトがクラスを表す場合、戻り値は クラスによって実装されたすべてのインターフェイスを表すオブジェクトを含む配列 です。配列内のインタフェースオブジェクトの順序は、 に対応し、このオブジェクトが表すクラスの 宣言のimplements句のインタフェース名の順番に対応します。例えば、 宣言を与え:
class Shimmer implements FloorWax, DessertTopping { ... }
は、Sの値は、シマーのインスタンスであると仮定する。 式の値:
s.getClass().getInterfaces()[0]
インターフェイスはFloorWaxを表すクラスのオブジェクトです。そして、の値 :
s.getClass().getInterfaces()[1]
はDessertToppingインタフェースを表すクラスオブジェクトです。
注しかし、このアプローチは、以下のように、たとえば、Shimmer
の代わりにスーパークラスのインターフェイスを実装したシナリオに対してtrueを返さないこと:
public interface FloorWax { }
public interface DesertTopping { }
public class Shimmer implements implements FloorWax, DessertTopping { }
public class ShimmerChild extends Shimmer {}
public static void main(String[] args) {
// throws ArrayOutOfBoundsException
System.out.println(new ShimmerChild().getClass().getInterfaces()[0]);
}
インターフェイスを返すには、@DylanMeeusで説明されている方法を使用します。Class#isAssignableFrom()
を実装されているかを知るためにどのようにあなたは
のようなものを使用してこれを行うことができます
MarkerInterface
という名前のインターフェイスとOtherClass implements MarkerInterface
という名前のインターフェイスがあるとします。
あなたがメイン
if(MarkerInterface.class.isAssignableFrom(OtherClass.class))
{
System.out.println("Otherclass uses the MarkerInterface");
}
なぜ私は明確にしたいインタビューの質問だった。マイナスには意味があります – suresh
あなたは以前の研究の兆候を見せていません。アイデアは、あなたが最初のステップを自分で作ろうとしていたと仮定して、私たちが常にあなたに「一歩前進」を手助けするということです。ここに質問をドロップすると「私に説明してください」は「先行研究」としてカウントされません。 – GhostCat
@GhostCat私はgoogleで解決策を見つけようとしましたが、最後のオプションで、stackoverflow Communityに残った解決策は見つかりませんでした。 このトピックについてはあまり研究を重ねていないかもしれません。 – suresh