私はJavaを学んでいます。私はいつもC#でJavaで行ってきたことをしようとしています。C#リスト実装... Javaで
目標は、 "MyItems"のリストにクラス "MyItem"をラップすることです。これにより、(MyItems
はList<MyItem>
よりも読みやすく/理解しやすくなります...たとえば、IEnumerable<KeyValuePair<string,List<Dictionary<int,bool>>>>
のようにもっと複雑にする必要があります... List<IEnumberaable<KeyValuePair<...>>>>>
の代わりにMyKVPDictionaries
を求めます)。
ちょうど周りを見て...それはC#のようにあなたのもののデフォルトの実装を維持することができます(以下を見て、ちょうど働く)。
Javaを見て... C#のようにリストを実装する方法はありますか?または、手動でリストの個々の部分を手動で実装する必要がありますか? (.add、.list、.containsなど)。
以下、私はClass
...と "List<Class>
"という基本的な実装をC#で持っています。
class MyItems implements List<MyItem>
をJavaで実装するのは本当にそれ以上の作業ですか、それとも処理を簡略化するために何か不足していますか?
(Javaコードは、Resharper "Auto Implement missing members" IntubiJを介したスタブ)を持つMyItems.java
クラスファイルのみです。
C#バージョン.NetFiddle:
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var myItems = new MyItems();
myItems.Add(new MyItem("Hello"));
myItems.Add(new MyItem(" "));
myItems.Add(new MyItem("World"));
myItems.Add(new MyItem("!"));
foreach(var item in myItems)
Console.Write(item.Name);
}
}
public class MyItems : List<MyItem>
{
}
public class MyItem
{
public MyItem(string name)
{
Name = name;
}
public string Name { get; private set; }
}
Javaのバージョンを開始/スタブ:
package items;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class MyItems implements List<MyItem> {
@Override
public int size() {
return 0;
}
@Override
public boolean isEmpty() {
return false;
}
@Override
public boolean contains(Object o) {
return false;
}
@Override
public Iterator<MyItem> iterator() {
return null;
}
@Override
public Object[] toArray() {
return new Object[0];
}
@Override
public <T> T[] toArray(T[] a) {
return null;
}
@Override
public boolean add(MyItem generatePreSignedUrl) {
return false;
}
@Override
public boolean remove(Object o) {
return false;
}
@Override
public boolean containsAll(Collection<?> c) {
return false;
}
@Override
public boolean addAll(Collection<? extends MyItem> c) {
return false;
}
@Override
public boolean addAll(int index, Collection<? extends MyItem> c) {
return false;
}
@Override
public boolean removeAll(Collection<?> c) {
return false;
}
@Override
public boolean retainAll(Collection<?> c) {
return false;
}
@Override
public void clear() {
}
@Override
public MyItem get(int index) {
return null;
}
@Override
public MyItem set(int index, MyItem element) {
return null;
}
@Override
public void add(int index, MyItem element) {
}
@Override
public MyItem remove(int index) {
return null;
}
@Override
public int indexOf(Object o) {
return 0;
}
@Override
public int lastIndexOf(Object o) {
return 0;
}
@Override
public ListIterator<MyItem> listIterator() {
return null;
}
@Override
public ListIterator<MyItem> listIterator(int index) {
return null;
}
@Override
public List<MyItem> subList(int fromIndex, int toIndex) {
return null;
}
}
ジェネリック 'List'は、クラスのインタフェースではありません。だからあなたはそのメンバーのすべてを実装する必要があります。 'List'を実装する' ArrayList'を継承することができます。 'public class MyItems extends ArrayList' –
"私はあなたを捨てました。 – niksofteng