2016-11-08 4 views
-1

私はいくつかのコードをC#からjavaに変換しています。いくつかのコードスニペットをc#からjavaに変換する

public class Point implements Iterable<Point>{ 
int X; 
int Y; 

/* 
* IEnumerator IEnumerable.GetEnumerator() 
    * { 
    *  return ((IEnumerable<Point>)this).GetEnumerator(); 
    * } 
*/ 
@Override 
public Iterator<Point> iterator() { 
    return ((Iterable<Point>)this).iterator(); 
}} 

IEnumerable<Point>.GetEnumerator()

+0

あなたがコメントで投票すれば、それは本当に役に立ちます。ありがとう – naveed

答えて

0

第二の機能と同等になります何それは少し奇妙に思える:私は私の変換である、ここで次の変換

struct Point : IEnumerable<Point>{ 
    public int X; 
    public int Y; 

IEnumerator<Point> IEnumerable<Point>.GetEnumerator() 
    { 
     Point point = new Point(); 
     for (point.Y = 0; point.Y < Y; ++point.Y) 
      for (point.X = 0; point.X < X; ++point.X) 
       yield return point; 
    } 

    IEnumerator IEnumerable.GetEnumerator() 
    { 
     return ((IEnumerable<Point>)this).GetEnumerator(); 
    }} 

を行う方法を見つけ出すことができませんPoint自体が実装され、Point型のIterableが使用されます。 Pointの1つのインスタンス(特定のPointオブジェクトは通常、他の点について多くのことを知っている必要はありません...)では、コレクションを行うことがあるかもしれません。あなたはguavaのPeekingIteratorを使うことができます。あなたがMavenで作業している場合、以下の依存関係がきちんとあなたに伝えられます。そうでなければ、JARが必要です。

<!-- https://mvnrepository.com/artifact/com.google.guava/guava-jdk5 --> 
<dependency> 
    <groupId>com.google.guava</groupId> 
    <artifactId>guava-jdk5</artifactId> 
    <version>17.0</version> 
</dependency> 

あなたはそれを持っていたら、ここで を使用することは非常に複雑ではありませんが実例である(と私はあなたの第二の機能に関連する部分を実装しています):

public class Point implements Iterable<Point> { 

    // Additional code here 
    private Iterator<Point> pointIterator; 

    public Point (Iterator<Point> pointIterator) { 
     this.pointIterator = pointIterator; 
    } 
    @Override 
    public Iterator<Point> iterator() { 
     return pointIterator; 
    } 


    PeekingIterator<Point> getEnumerator() { 
     if (pointIterator instanceof PeekingIterator) { 
      return (PeekingIterator<Point>)pointIterator; 
     } else { 
      return null; 
     } 
    } 

    public static void main(String[] args) { 
     Point myPoint = new Point(new PeekingIteratorMock()); 
     PeekingIterator<Point> myIterator = myPoint.getEnumerator(); 
     Point p; 
     while ((p = myIterator.next()) != null) { 
      // Do something usefull here 
     } 
    } 

} 

PeekingIteratorですインタフェースを提供していますので、実用的なテストケースが必要な場合は具体的な実装に渡す必要があります。私はそれをあなたが完了するために実装されていないままにしておきました。

public class PeekingIteratorMock implements PeekingIterator<Point> { 

    @Override 
    public boolean hasNext() { 
     // TODO Auto-generated method stub 
     return false; 
    } 

    @Override 
    public Point next() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public Point peek() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public void remove() { 
     // TODO Auto-generated method stub 

    } 

} 
+0

ありがとう。これは助けになった。 – naveed

+0

@naveed私はそれが嬉しい:) – alainlompo

関連する問題