webForumDet fria alternativet

MidiDevice.Info - Fråga om att använda klassen

5 svar · 215 visningar · startad av mangan

manganMedlem sedan feb. 2003216 inlägg
#1

hej!
hade tänkt att skriva ett litet progg som kollar av midi-enheter. Jag har skrivit följande lilla testprogram för att skriva ut de midi-enheter jag har på mitt system.

import javax.sound.midi.MidiSystem;
import javax.sound.midi.MidiDevice.Info;

public class MidiTest {
	private static MidiDevice.Info[] devices;

	public static void main(String[] args) {
		devices = MidiSystem.getMidiDeviceInfo();
		int i=0;
		while(devices[i] != null){
			System.out.println(devices[i].getName());
			i++;	
			
		}	
	}	
}

Detta genererar dock ett kompileringsfel enligt följande:

E:\java\projekt\miditest\MidiTest.java:6: package MidiDevice does not exist
private static MidiDevice.Info[] devices;
^
1 error

vilket kanske inte är så konstigt om man tittar lite i APIn, för MidiDevice finns ju faktiskt inte. Om man tittar noga ser man att det står Enclosing class: MidiDevice. Då tror jag att man ska importera denna klassen men det är ju ett Interface vilket är något jag aldrig sysslat med. Min bok tar bara upp Interface som hastigast och ger inte så mycket info. Vad jag kan förstå av det lilla som står måste man implimentera ett Interface och till handahålla de metoder som ingår i det. Nu har jag två frågor:

1. Måste man implimentera alla metoder i ett interface?
2. Kommer MidiDevice.Info klassen automatiskt att "följa med" när man implimenterar MidiDevice interfacet?

SPiNMedlem sedan mars 20007 896 inlägg
#2

Visst finns klassen/Interfacet, problemet är hur du skapar instans av klassen.

Du har med en del av paketnamnet när du skapar den, skriver du som följer så bör det fungera bättre:

...
private static Info[] devices;
...
manganMedlem sedan feb. 2003216 inlägg
#3

Ja det funkade ju fint. Hur "såg" du det om man säger så?
Måste jag inte implementera Interfacet alls? Som sagt, vet inget om interface...

SPiNMedlem sedan mars 20007 896 inlägg
#4

Hur "såg" du det om man säger så?

En Java-klass/interface kan aldrig innehålla en punkt, alltså är det som står innan punkten en del av paketnamnet.

Måste jag inte implementera Interfacet alls? Som sagt, vet inget om interface...

Du måste importera det, vilket du gör: import javax.sound.midi.MidiDevice.Info;. Du behöver däremot inte implementera det, du får en instans av en klass som implementerar det när du anropar MidiSystem.getMidiDeviceInfo(). Så det ska vara lugnt. :)

manganMedlem sedan feb. 2003216 inlägg
#5

Tack för hjälpen pöjkar!
Nu måste jag bara se till att planera lite innan jag sätter igång på riktigt. På återseende!

SPiNMedlem sedan mars 20007 896 inlägg
#6

Får jag tipsa om ett utvecklingsverktyg för planering/modellering? Visual Paradigm har ett UML-verktyg som man får använda gratis om man inte använder det för kommersiella syften, det hittas på http://www.visual-paradigm.com :)

Markera gärna tråden som löst genom att klicka på "Acceptera som slutgiltigt svar"-länken i det inlägg som löste problemet. Det underlättar för andra besökare när de använder t.ex. sökfunktionen. :)

130 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)