2017-03-25 14 views
-3

私はCで行ったように、javaで一般的な拡張メソッドを実装したいと思っています。ここでC#のようにJavaで汎用拡張メソッドを作成するには?

は、私のC#のコードです:

CountryRepository.cs

public class CountryRepository : ICountryRepository 
{ 
    // ... here are some code not relevant to understand my problem 

    public IEnumerable<Country> LoadCountries() 
    { 
     List<Country> countries = new List<Country>(); 

     using (var sqlConnection = new SqlConnection(this.connectionString)) 
     { 
      sqlConnection.Open(); 
      string sqlTxt = "SELECT * FROM tab_Countries ORDER BY SortID"; 

      using (SqlCommand readCmd = new SqlCommand(sqlTxt, sqlConnection)) 
      { 
       SqlDataReader countriesReader = readCmd.ExecuteReader(); 


       while (countriesReader.Read()) 
       { 
        Country c = new Country(); 

        c.CountryCode = countriesReader.Get<string>("CountryID"); 
        c.Country = countriesReader.Get<string>("Country"); 
        c.SortID = countriesReader.Get<int>("SortID"); 

        countries.Add(c); 
       } 

       readCmd.Dispose(); 
       countriesReader.Dispose(); 

      }; 
      sqlConnection.Close(); 
     } 
     return countries; 
    } 
} 
:ここ

DataRecordExtensions.cs

public static class DataRecordExtensions 
{ 
    public static T Get<T>(this IDataRecord record, string fieldName, T defaultVal = default(T)) 
    { 
     object o = record[fieldName]; 
     if (o != null && !DBNull.Value.Equals(o)) 
     { 
      try 
      { 
       return (T)Convert.ChangeType(o, typeof(T)); 
      } 
      catch 
      { 

      } 
     } 
     return defaultVal; 
    } 
} 

は、私はそれをDataRecordExtensionsメソッドを使用する方法でありますあなたが見ることができると同様

、私は今、私は、Javaでこのようなものを使用したいcountriesReader.Get <文字列>(「CountryID」) を使用しています。このような拡張メソッドをJavaで使用するにはどうすればよいですか、それとも何か別の方法がありますか? Javaを使用し

+0

あなたはJavaのジェネリックについて何を検索しましたか? – Omore

+1

代わりに、GroovyとKotlinがあります。 – chrylis

+0

私はJavaが拡張メソッドと同等の機能を持っているとは思わない。 – juharr

答えて

1

、あなたはまた、このようなメソッドを呼び出すことができます。

私は、Javaを学習するとき、私は見た彼のユーチューブのビデオの一つでPogostick29devによる方法、考え最初の例を使用するには。文脈にそれを置くために

String bar = Foo.<String>getFromConfig(Some.File.Path); 

のように呼び出すことができたで

private FileConfiguration config = .... 
public <T> T getFromConfig(String path) { 
    return (T) config.get(path); 
} 

が、これは設定ファイルから指定されたセクションを取得するために使用されました。

非常に特定の役割でMinecraftの改造APIのためだったに注意する必要がありますが、例では、ジェネリック医薬品を簡単に使用することができる方法の真を示します。

関連する問題