public interfaceの記述場所

このQ&Aのポイント
  • public interfaceの記述場所について教えてください。
  • Android StudioでMyApplicationを作成後、public interfaceのコードを追加する方法を教えてください。
  • MainActivityやExampleInstrumentedTestのファイルにpublic interfaceのコードを追加するべきか教えてください。
回答を見る
  • ベストアンサー

public interfaceの記述場所

Android StudioでMyApplicationを作った後、 public interface HatenaApiInterface { String END_POINT = "http://b.hatena.ne.jp"; String TARGET_URL = "http://b.hatena.ne.jp/ctop/it"; @GET("/entry/jsonlite/") Call<BookmarkContainer> getBookmarksWithUrl(@Query("url") String target); } --------- 上記のコードを追加したいのですが、どこに追加するのが良いでしょうか? 現在、MainActivity ExampleInstrumentedTest ExampleUnitTestなどのファイルがあるのですが右も左もわからない状態なので恥ずかしながら質問致します。ご教授願えたらうれしいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>「interface」に「public」が付与されている場合、「public」が付与されている「class」が存在しない(「public」が付与されてない「class」は存在しても良い)「java」ファイルでないと記述できないようです(1ファイル内に複数の「interface」を記述可)、その「java」ファイルには「public」が付与されてない「interface」も混在可。 申し訳御座いません、訂正です。 「interface」に「public」が付与されている場合、「public」が付与されている「class」が存在しない(「public」が付与されてない「class」は存在しても良い)「java」ファイルでないと記述できないようで、そのファイル名と同じインターフェイス名にする必要があるようです。 「public」が付与されているメインの「interface」は1ファイル内に1つだけしか記述できないようです、その「java」ファイルには「public」が付与されてない「interface」も混在可(「public」が付与されてない「interface」は1ファイル内に複数記述可)。 その ご質問の条件の場合、下記のルールから、新たな「java」ファイルが必要になります。 (「MainActivity」(javaファイル)と同じフォルダーに)「 HatenaApiInterface」と言う「java」ファイルを新規作成([Kind]は[Interface]に指定して下さい)し、そのファイルに そのインタフェースを記述して下さい。 (新規作成時は問題ないのですが)interface を編集(変更)した場合は[Build]→[Clean Project]や、[Run]→[Clean and Rerun]など Clean を実行しないと変更が反映されないようです。 (上記で前述したとおり)「public」が付与されたメインの「interface」は「1ファイル内に1つだけしか記述できない」と言う制約があるので、1ファイル内に複数 収めたい場合は「public」が付与されたメインの「interface」内に「public」が付与されたサブの「interface」を複数記述すると言う手法が考えられますが、それが最善か少々疑問です。 インタフェースの宣言(interface) http://www.javaroad.jp/java_interface2.htm >インタフェースのアクセスレベルを指定します。publicがなければインタフェースと同じパッケージ内で定義されたクラスのみからアクセスできることを表します。publicがあれば全クラスからアクセスできることを表します。 つまり、全クラスから その「interface」にアクセス可能にしたければ「public」を付与する、同一パッケージ内のみだけから その「interface」にアクセスを制限したければ「public」を付与しない、と言う事になります。 「interface」に「public」が付与されてない場合は、「public」が付与されている「class」が存在する「java」ファイルや、「public」が付与されている「class」が存在しない(「public」が付与されてない「class」は存在しても良い)「java」ファイルにも記述可。 その場合メイン・クラスの外側にも記述可、クラスの内側にも記述可なようです(あくまで個人的な主観ですが、クラスの内側に「interface」を記述するのは あまり推奨されないような気がします)。 「interface」に「public」が付与されている場合、「public」が付与されている「class」が存在しない(「public」が付与されてない「class」は存在しても良い)「java」ファイルでないと記述できないようで、そのファイル名と同じインターフェイス名にする必要があるようです。 「public」が付与されているメインの「interface」は1ファイル内に1つだけしか記述できないようです、その「java」ファイルには「public」が付与されてない「interface」も混在可(「public」が付与されてない「interface」は1ファイル内に複数記述可)。

関連するQ&A

  • @GET

    Javaの文法について public interface HatenaApiInterface { String END_POINT = "http://b.hatena.ne.jp"; String TARGET_URL = "http://b.hatena.ne.jp/ctop/it"; @GET("/entry/jsonlite/") Call<BookmarkContainer> getBookmarksWithUrl(@Query("url") String target); } ソースコード中の 「@GET("/entry/jsonlite/")」なのですが、どういった意味を持つのでしょうか? 初歩の初歩で躓いているかも知れませんが教えて頂けると助かります。

    • ベストアンサー
    • Java
  • Functionでの戻り値のとり方

    こんばんわ。 以下のように、Functionで引数に配列を指定して、戻り値も配列で取得したいのですが、方法としては以下のようにしかできないのでしょうか? ------------------------- '配列を宣言 dim Ary() as string dim AryRet() as string '戻り値の配列 Call Get_Ary(Ary(),AryRet()) ------------------------- Function Get_Ary(Ary() as string , AryRet() as string) 'Ary()を参照して、AryRet()を取得する End Function という風に書いているのですが、Functionのところを以下のように 書くのは無理でしょうか? うまく取れないというのはやっぱ無理なのかな・・ ------------------------- '配列を宣言 dim Ary() as string dim AryRet() as string '戻り値の配列 AryRet() = Get_Ary(Ary()) Function Get_Ary(Ary() as string) As string 'Ary()を参照して、AryRet()を取得する 'それを関数の戻り値とする Get_Ary = AryRet(index) End Function このように書くと、配列の最後のインデックスの値だけ取れてしまう ようなんですが、、やっぱ配列で返すというのは上記のやり方でないと 無理なのでしょうか? 詳しい方ご教示願います。

  • assigning a value to structure's member accessed via collection

    Class SampleA Private SampleAPoints As New System.Collections.Generic.List(Of System.Drawing.Point) Public ReadOnly Property Points As System.Collections.Generic.List(Of System.Drawing.Point) Get Return SampleAPoints End Get End Property End Class Class himajin100000 Shared Sub Main Dim Samp As New SampleA Samp.Points.Add(New System.Drawing.Point(80,80)) Samp.Points(0).X = 40 Samp.Points(0).Y = 40 End Sub End Class 'とかやってたら 'Expression is a value and cannot be target of an assignment 'といわれてしまいました。 '参考 'http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=295107 'どうやって切り抜けますか?

  • リストボックス内の配列を保存・呼び出し

    お世話になります。 VB2005ユーザーです。 リストボックスに格納した配列をファイルへ保存・呼び出しをするにはどうすればいいのでしょうか? リストボックスにはTextbox1,2,3の内容を格納し、オーバーライドによりリストボックスにはTextbox1が表示されるようにすることはできたのですが、 SaveFileDialogを使って配列をファイルに保存する方法がわかりません。 http://dobon.net/vb/dotnet/file/xmlserializer.html こちらなどを参照させていただいたりしたのですが、よく理解できませんでした。 リストボックスに格納するコードは下記のようなものです。 Public Structure MyStruct Private _a As String Private _b As String Private _c As String Public Property a() As String Get Return _a End Get Set(ByVal Value As String) _a = Value End Set End Property Public Property b() As String Get Return _b End Get Set(ByVal Value As String) _b = Value End Set End Property Public Property c() As String Get Return _c End Get Set(ByVal Value As String) _c = Value End Set End Property ' ToStringメソッドをオーバーライドする Public Overrides Function ToString() As String Return Me._a End Function End Structure Private Sub リストに追加_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim myStruct As New MyStruct myStruct.a = Textbox1.Text myStruct.b = Textbox2.Text myStruct.c = Textbox3.Text ' アイテム追加 ListBox1.Items.Add(myStruct) ListBox1.SelectedIndex = 0 End Sub 望む結果としては、リストボックスに格納した複数の配列をファイルに保存、呼び出し時には保存した内容を基にリストボックスに復元、という動作をして欲しいのです。 ご教示のほう、宜しくお願いいたします!!

  • excel2000のVBAを配布用に改造したい

    下記のコードを、多数のユーザーに配布するため、自動的にPERSONAL.XLSのModule 1に登録させられるようなコードを教えていただけるとありがたいです。よろしくお願いいたします。 ■お願いしたいこと (1)下記コード「passget」と「mailsheetopen」を自動的にPERSONAL.XLSのModule 1に追記するコードを教えてほしい (2)さらに「mailsheetopen」のコマンドをツールバー右下に自動的に表示させられるようにしたい Private sub passget() Dim TempObject As MSForms.DataObject Set TempObject = New MSForms.DataObject With TempObject .SetText "<<http://" & ActiveWorkbook.FullName & ">>" .PutInClipboard End With Set TempObject = Nothing End Sub '------------------------------------------------------------ Sub mailsheetopen() On Error Resume Next Call passget Dim target_dir As String Dim target_file As String Dim target_sheet As String target_dir = "C:\Users\new\Desktop" target_file = "rensyu.xls" target_sheet = "rensyu" 'ブックを開く Workbooks.Open Filename:=target_dir & "\" & target_file 'シートを指定 Sheets(target_sheet).Select 'セルを指定 Range("B6").PasteSpecial End Sub

  • VBAの記述で、あるシートを別ファイルにした場合

    エクセル2002で、商品を管理しています。 1列目に品番をいれると、2列目に品名が表示するようにし、 新規の品番は品名を入れると、追加登録されるようにVBAを組みました。 今度、このシート"商品"を別ファイル(商品.xls)にしたいと思うのですが、 どうしても、やり方が分かりません。 よろしくお願いします。 Public Sub Worksheet_Change(ByVal Target As Excel.Range) Dim 品番 As String Dim 品名 As String Dim i As Long With Target If .Column = 1 Then 品番 = .Text For i = 1 To 65536 If Sheets("商品").Cells(i, 1) = "" Then ActiveSheet.Cells(.Row, 2) = "" Exit For ElseIf 品番 = Sheets("商品").Cells(i, 1) Then ActiveSheet.Cells(.Row, 2) = Sheets("商品").Cells(i, 2) Exit For End If Next i End If If .Column = 2 Then 品名 = .Text 品番 = ActiveSheet.Cells(.Row, 1) If 品名 = "" Or 品番 = "" Then Else For i = 1 To 65536 If Sheets("商品").Cells(i, 1) = "" Then Sheets("商品").Cells(i, 1) = 品番 Sheets("商品").Cells(i, 2) = 品名 Exit For ElseIf 品番 = Sheets("商品").Cells(i, 1) Then Exit For End If Next i End If End If End With End Sub

  • 【ASP.NET】 独自で作成したクラスが認識されない

    お世話になります。ASP.NETに関する質問です。 Visual Studio 2008の開発環境において、 画面右側のソリューションエクスプローラより 右クリックして[新しい項目の追加]をクリックして 新規にクラスファイル(Class1.vb)の作成(言語: Visual Basic)を 行いました。 別のソースファイルより、上記で作成したクラスをインスタンス化 しようとしたところ、コンパイル時に下記エラーが出力されます。 ------------------------------------------------------ 型 'Class1' が定義されていません。 ------------------------------------------------------ クラスをインスタンス化しているソースの記述は以下の通りです。 (test.vb)--------------------------------------------- '変数宣言 Dim cl1 as Class1 = Session.Contents("クラス1") ------------------------------------------------------ Class1.vbの内容は以下の通りです。 (Class1.vb)------------------------------------------- Public Class Class1 Protected _LoginTime As String Public Property LoginTime() As String Get Return _LoginTime End Get Set(ByVal Value As String) _LoginTime = Value End Set End Property End Class ------------------------------------------------------ どなたか原因と対処方法についてご教授願えますでしょうか? 以上、よろしくお願いいたします。

  • 項目が一致したフィールドを追加

    インポートしたデータを項目名が一致したフィールドを作業テーブルに追加クエリしたい。 ご回答ありがとうございます。是非教えてください。 ・インポートは先頭行をフィールド名として使ってません。 項目名_PP(20個)にある項目名とインポートした一時テーブルにある項目と一致したフィールドを作業テーブルに追加したいのですが取得した20フィールドを作業テーブルに追加をどうやっていいかわかりません。 作業テーブルも20項目あるのですが・・ご教授お願いします。 Set db = CurrentDb() Dim rs As DAO.Recordset Dim rstop As DAO.Recordset Dim SQL As String Dim SQLTop As String Dim iCntTop As Integer Dim sERRTXT As String Dim bFlg As Boolean Dim sSQLNM As String SQL = "項目名_PP" SQLTop = "一時テーブル" If F_RecordsetOpen(SQLTop, rstop, dbOpenSnapshot, dbReadOnly) Then If F_RecordsetOpen(SQL, rs, dbOpenSnapshot, dbReadOnly) Then Do Until rs.EOF For iCntTop = 0 To 254 sSQLNM = "" '項目名が一致したら(=必要項目)ループを抜ける If rstop.Fields(iCntTop) = rs![項目名] Then sSQLNM = rstop.Fields(iCntTop).Name Debug.Print sSQLNM Exit For End If Next iCntTop If Trim(sSQLNM) <> "" Then ' SQL = " INSERT INTO 作業テーブル ' 'sSQLNMでループで抜けたフィールドを追加作業テーブルに追加したいのですが・・・ Call F_ExecuteSQL(SQL) End If rs.MoveNext Loop End If Call S_RecordsetClose(rs) End If Call S_RecordsetClose(rstop) End Sub

  • VBAでプロシージャ間のデータを渡したい

    VBAでプロシージャ間のデータを渡したい main関数の中でget_Recordという関数を呼んでいます。この中でアクセスの テーブルからデータを取得して、「this_Hensuu」という変数に格納します。 やりたいことは、get_Recordで取得した変数をmain関数の中で利用したいです。 main()関数外で変数を宣言してグローバル変数とすれば解決するのは わかりますが、その他の方法でmain関数に値を渡すことは可能でしょうか? Sub main() Dim x = 10 Call get_Record(x) ... ... end sub Sub get_Record(Byref x As Integer) Dim rs As Dao.recordset Dim this_Hensuu As String Dim this_Hensuu2 As String get_SQL As String get_SQL ="" get_SQL="Select * from TABLE1 where ID='" & x & "'" rs = Openrecordset(get_SQL,opendynaset) this_Hensuu = rs!名前 this_Hensuu = rs!名前2 end sub

  • なぜ値が代入されるのかわからない

    Sub Sample1() Dim 文字 As String 文字 = "あああ" Call Sample2(文字) 'プロシージャSample2の引数に変数を渡して呼び出す End Sub Sub Sample2(a As String) MsgBox a End Sub ---------------------------------- をやってみて疑問なのですが、 なぜ a = 文字 がないのに、 aに”あああ”が代入されるのでしょう? aにウォッチ式の追加をあてて、F8で一行ずつステップインしてみると Sub Sample2(a As String) の部分で、 aに””あああ”が代入されています。 a = 文字 と Sub Sample2(a As String) は 同じ意味なのでしょうか?

専門家に質問してみよう