Avatar billede aslan Nybegynder
18. juni 2002 - 11:20 Der er 12 kommentarer og
1 løsning

reference to Date is ambiguous

Er der nogen der ved hvad man gør med sådan en:

C:\Documents and Settings\aslan\Skrivebord\modelKomponent\ReservationG.java:388: reference to Date is ambiguous, both class java.util.Date in java.util and class java.sql.Date in java.sql match
        Date Start = hentFunk.conveter(start);
                ^
C:\Documents and Settings\aslan\Skrivebord\modelKomponent\ReservationG.java:389: reference to Date is ambiguous, both class java.util.Date in java.util and class java.sql.Date in java.sql match
        Date Slut =  hentFunk.conveter(slut);
        ^
2 errors

Tool completed with exit code 1
Avatar billede jakoba Nybegynder
18. juni 2002 - 11:49 #1
java.sql.Date Start = hentFunk.conveter(start);

hvis det er den du mener
Avatar billede disky Nybegynder
18. juni 2002 - 12:24 #2
det skyldes at java har 2 udgaver af date

en java.util.Date; og en java.sql.Date;

Derfor specificer hvilken af dem du vil bruge.
Avatar billede uffehellum Nybegynder
18. juni 2002 - 16:18 #3
Hold op med at skrive stjerner i import:
import java.util.*; // Collection, Date, etc.
import java.sql.*; // Array, Date, Driver, etc.

Begge linier forsøger at lave et alias "Date" for dig, til hver sin klasse.

I stedet skal du i dine imports skrive en klasse ad gangen, så du altid ved, præcis hvilke klasser du bruger fra hver pakke. I starten er det måske lidt besværligt, hvis du ikke ved, hvilke programmer, du bruger, men det er så meget desto bedre grund til at begynde at skrive pænt :-)
import java.sql.Driver;
import java.util.Date;
import java.util.Enumeration;

Hvis du absolut vil bruge alle stjernerne, så skal du engang imellem klare dig uden alias for fx. Date og Object, der begge findes i flere pakker. Jeg gætter på, at du skal bruge java.util.Date, og det må du så taste ind i stedet for den korte form.

Jeg vil lige reklamere lidt mere for den officielle side, hvor du kan se hele sandheden, om hvilke objekter, der gør hvad:
http://java.sun.com/j2se/1.4/docs/api/index.html
Avatar billede aslan Nybegynder
18. juni 2002 - 16:48 #4
Hvad er forskellen på en java.util.Date; og en java.sql.Date;?
Avatar billede aslan Nybegynder
18. juni 2002 - 17:03 #5
Desuden får jeg fejl alligevel:

C:\Documents and Settings\aslan\Skrivebord\modelKomponent\Værelse.java:10: cannot resolve symbol
symbol  : constructor Date  ()
location: class java.sql.Date
    java.sql.Date datoCheckInd = new Date();
                                ^
1 error

Tool completed with exit code 1
Avatar billede uffehellum Nybegynder
18. juni 2002 - 17:04 #6
java.sql.Date er nedarvet fra java.util.Date. De er næsten ens.

toString giver yyyy-mm-dd, som jo er den korrekte standardform i både Danmark og USA, selvom vi tit ser underlige lokale varianter ;-)

Hvis du skal håndtere danske datoer, skal du kigge på klasserne:
Calendar http://java.sun.com/j2se/1.4/docs/api/java/util/Calendar.html
DateFormat http://java.sun.com/j2se/1.4/docs/api/java/text/DateFormat.html

MVH Uffe.
Avatar billede aslan Nybegynder
18. juni 2002 - 17:09 #7
ehm... kan du se hvorfor jeg får fejl?
Avatar billede aslan Nybegynder
18. juni 2002 - 17:11 #8
java.util.Date datoCheckInd = new java.util.Date();
Avatar billede aslan Nybegynder
18. juni 2002 - 17:12 #9
dumme slag...
Avatar billede aslan Nybegynder
18. juni 2002 - 17:28 #10
Men hvorfor får jeg så fejl over dette?

C:\Documents and Settings\aslan\Skrivebord\modelKomponent\Reservation.java:10: cannot resolve symbol
symbol  : constructor Date  ()
location: class java.sql.Date
    java.sql.Date datoReservation = new java.sql.Date();
                                        ^
1 error

Tool completed with exit code 1
Avatar billede uffehellum Nybegynder
19. juni 2002 - 01:04 #11
Der er ingen "zero argument constructor" til java.sql.Date, så du kan ikke oprette en, uden at angive et tidspunkt.

Jeg synes, du skal oprette din variabel som typen java.util.Date.  Så kan den stadig sagtens referere til en java.sql.Date, hvis du får sådan en fra fx. JDBC.

Bemærk nedenfor, at datoen fra java.util formatterer sig selv anderledes end den fra java.sql.

MVH Uffe.

public class D {
    public static void main(String[] a) {
        java.util.Date d;
        d = new java.util.Date();
        System.out.println(d);
        d = new java.sql.Date(Long.parseLong(a[0]));
        System.out.println(d);
    }
}

C:\cvs\java>javac D.java
C:\cvs\java>java D 1000000000000
Wed Jun 19 01:00:22 CEST 2002
2001-09-09
C:\cvs\java>
Avatar billede disky Nybegynder
19. juni 2002 - 07:54 #12
uffehellum:
Jeg vil klart fraråde at importere hver enkelt klasse individuelt.

Har du nogen ide om hvor mange imports det bliver til i komplicerede klasser.

I dette tilfælde med Date nøjes man med at importere den mest brugte, og specificerer den anden implicit.

yyyy-mm-dd er ikke den korrekte standard form af angive datoer i, i danmark.
.toString() bruger man alligevel aldrig ved date's. Man bruger SimpleDateFormatter istedet.

aslan:

Forskellen på java.util.dat og java.sql.date er ret lille

java.sql.date er som sagt tidligere en sub klasse af java.util.data som bare er en wrapper omkring sql datoer
Avatar billede uffehellum Nybegynder
19. juni 2002 - 08:47 #13
Tjah, det er vel en smagssag. Det sunde ved at importere hver klasse, er at man samtidig dokumenterer for læseren, hvad man har gang i.  Selv ved meget store classer, kan jeg ikke se noget galt i at toppen af filen beskriver alle ens referencer til klasser i andre pakker.

Faktisk sætter nogen mennesker kommentarer ind om brug af lokale klasser:
import ...;
// uses MyHelperClass
// uses MyHelperFrame
...

Det er rigtigt, at hvis man siger fx.
import java.sql.*;
import java.util.*;
import java.util.Date;
...så vælger Java automatisk den Date, der liggger i java.util, fordi den er nævnt eksplicit.  Det er sikkert den korteste notation, hvis man vil spare tastetryk, og hvis man ikke mener, læseren har gavn af en eksplicit liste.

disky: Du tager fejl med hensyn til datoformatet.  Der er mange, der bruger dd-mm-åååå uformelt, men Dansk Standard er helt klar, og har været det i mange år: Det officielle, danske format er åååå-mm-dd. Det er pudsigt nok også den korrekte standard under ANSI (USAs standardiseringsråd), selvom amerikanere mest bruger mm/dd/åååå.

Jeg er helt enig i din reklame for SimpleDateFormatter. Det er på sigt den simpleste måde at kontrollere sine formater, selvom man skal læse lidt dokumentation første gang.

MVH Uffe.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester