|
|
Köszönöm, figyelni fogok rá  Meg ügyelni.
|
|
|
Idézet LugaidVandroiy :
Most bőven elég byte tömböket küldözgetni. A célját ellátja, relatíve gyors is, most már marad 
csak nehogy megszivjad a reprezentacios elteresekkel. endianness, signed/unsigned. Meg ilyenek
|
|
|
Most bőven elég byte tömböket küldözgetni. A célját ellátja, relatíve gyors is, most már marad
|
|
|
Ertem. Csak az interop igy nehezkesebb. rpc nem fog menni, csak corba, ws nameg a sima text.
|
|
|
Mert ott könnyebb volt összekattintgatni a GUI-t és WINAPI hívásokat végezni. Meg mert ehhez értek még jobban Java-n kívül.
|
|
|
Miert van a szerver c#-ban?
|
|
|
A segítségetekre lenne szükségem - megint
Szóval az van, hogy van Java-ban írva egy kliens, C#-ban meg egy szerver. Eddig tökéletesen ment az, hogy A kliens adatokat küldött a szervernek. Tök jó, meg minden, viszont oda-vissza kommunikációt szerettem volna csinálni. Elvileg megírtam, viszont a kliens nem kap valamiért adatot a szervertől. Mi lehet a hiba?
Szerver (C#):
Kód: public void SendBack(string message, NetworkStream stream)
{
if (stream.CanWrite)
{
byte[] candy = Encoding.ASCII.GetBytes(message + ";");
stream.Write(candy, 0, candy.Length);
stream.Flush();
Console.WriteLine("[SENT] " + message);
}
else { Console.WriteLine("ERROR! CANNOT WRITE ON NETWORKSTREAM!"); }
}
Kliens (java):
A kapcsolat létrehozásakor:
Kód: bReader = new BufferedReader(new InputStreamReader(gSocket.getInputStream()));
new Thread (new Runnable(){
public void run() {
Log.d(TAG, "Started listerner...");
ListenServer();
}
}).start();
És a thread:
Kód: private void ListenServer(){
try{
String inputLine = "";
while (true){
inputLine = bReader.readLine();
if (inputLine != null)
Log.d(TAG, "Got: " + inputLine);
}
} catch (IOException e){ Log.d(TAG, "Could not listen to sever!"); }
}
Edit: megvan a mocsok.. Gondolhattam volna rá, de nem olvastam el a BufferedReader.readLine() dokumentációját... elvár egy "\n"-t a string végén. Epic fail?
Helyesen a küldés:
Kód: byte[] candy = Encoding.ASCII.GetBytes(message + ";\n");
Ezt a hozzászólást LugaidVandroiy módosította (2012.04.04 20:28 GMT+1 óra, ---)
|
|
|
Azért kösz.
-----------------------------------------
Dont Listen to the Naysayers
|
|
|
Lehet oltári nagy baromság, de próbálj meg castolni. Sok problémám eredt már ebből, egy próbát megér.
Akkor tárgytalan.
|
|
|
Kikészülök, valaki vezessen már ki az erdőből legyen olyan kedves.
Szóval van egy Vector2 osztályom, amiben van x, y float változó.
Namos ehhez hozzá akarok adni eg ymásik Vector2-t amit mellesleg meg is szorzok egy számmal.
Kód: position.x += velocity.x * dt;
A jelenség a következő.
Legyen mondjuk position.x = 7.5, velocity.x = 1.0 és a dt = 0.056;
Ha a fenti kódot futtatom, akkor kapok egy 86766.37 és ehhez hasonló borzalmat.
ha simán kiszámoltatom vele a
Kód: position.x += 1.0f * 0.056f;
képletet akkor jó.

Kiiratom a változók értékeit, szóval biztos, hogy nem valami ordenáré nagy számot adok hozzá.
Felteszem valami memória címzés lehet nyomozok, de hátha van ötlet, hogy hol keressem.
Nem szóltam. dt az elején felugrik, csak a logbol meg kiszalad ezért nem láttam eddig.
Ezt a hozzászólást DMG módosította (2012.04.02 19:09 GMT+1 óra, ---)
-----------------------------------------
Dont Listen to the Naysayers
|
|
|
Ezt majd megnézem, köszönöm szépen!  Bár egyenlőre szerintem maradok a sima Java Application-nál, aztán majd átírom appletté.
|
|
|
Nekem van erre egy viszonylag jól működő megoldásom, megpróbálom bemásolni a releváns részét:
Kód: public static Applet App;
static HashMap<String, MyImage> Images = new HashMap<String, MyImage>();
int ID = 0, IDCounter = 0;
...
void Load(string name){
MediaTracker tracker = new MediaTracker(App);
URL url = MainAppletClass.class.getResource("/Pictures/"+name);
Image im = App.getToolkit().getImage(url);
ID = IDCounter++;
tracker.addImage(im, ID);
Images.put(name, this);
tracker.waitForAll();
}
Az App változó értelem szerűen az applet objektumod, a MainAppletClass meg ennek a típusának a neve. Ezt én is a netről vadásztam, és nekem működött, persze a teljes kód kicsit nagyobb, meg összeszedetlenebb, de elvben ennyi a lényeg belőle.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
|
|
|
Van egy kis problémám, amit nem teljesen értek. Szeretném az egyik programomat Appletté átalakítani. Az összes art egy statikus HashMap-ban van tárolva.
Kód: public static HashMap<String, BufferedImage[]> assets = new HashMap<String, BufferedImage[]>();
Betöltésnél pedig a következő zajlik (ami lényeges):
Kód: tImage = (BufferedImage)jApplet.getImage(jApplet.getCodeBase(), "/assets/snow.png");
Az a baj, hogy ez elvágódik egy Exception-al, de annak az üzenete null, így esélyem sincs meghatározni, hogy mégis mit cseszek el.
A betöltő függvény az Applet konstruktorában hívódik meg.
|
|
|
Van itt valaki aki nagyon brutal-metal-durvan ert az eclipse RCP-hez? Mert akkor van egy kerdesem...
|
|
|
Megint tanultam valamit, kösz az infot.
|
|
|
A java7 mersekelt fejlodes volt. De ha jovo ev vegen kijon a 8 es tenyleg lesz benne lambda, akkor meg nincs minden elveszve.
|
|
|
Dehogynem fejlesztik, nemrég jött ki a C++11 szabvány. C++ future. Kb mindenki ezt tekinti standarnek. Nekem a Java tűnik állóvíznek, nem nagyon halad semerre.
Az OpenGL azért nehezebb elsőre, mert mindent úgy kell összevadászni hozzá. Nincs benne textúra betöltés, input kezelés, kizárólag grafikai API.
|
|
|
Közben megnéztem a JMonkeyt ez nagyon frankó, inkább ezzel fogok próbálkozni
|
|
|
Azért OpenGL mert ha jól tudom egyszerűbb, java pedig azért mert ahhoz értek a legjobban, a c++ nem sértésnek szánom de elég halott dolognak tűnik számomra. Illetve több dolog nem tetszik benne,pl: már nem fejlesztik. A javat igen. Nem sokkal gyorsabb már a c++ a java -nál, és mivel nem akarok komolyabb játékot írni nem látom értelmét DirectX -nek nekifutni, valószínűleg elég nagyot is koppannék a nekifutáson
|
|
|
Miért OpenGL és miért Java? De, ha már ez a kettő, akár egy engine is lehet, nem? JMonkey
|
|
|
Sziasztok!
Java -ban szeretnék kipróbálni az OpenGL -es játékfejlesztést. Csak egyszerűbb dolgokat. Megvan Nyisztor Károly mind a két könyve belenézegetem van már róla némi fogalmam hogyan működik a 3dés alkalmazás fejlesztés. Z-Buffer, Mátrixok stb. Azonban a példák DirectX ben íródtak. Tudna valaki ajánlani egy könyvet? Nyelv lehet Magyar Angol vagy Olaszul.
A java -ban nem vagyok Profi de nem hiszem, hogy problémát okozna maga a programozás technika. Inkább maga az OpenGl okozza a problémát. Annyira már nem értek hozzá hogy tudjam az Lwjgl menyire követi az OpenGl sytaxisát. Tehát valami általános könyvre lenne szükségem , elég sok van fent az interneten nekem egy Beginner szintű kéne.
Lwjgl szeretnék használni, néztem a jogl -t is de lwjg kicsit összeszedetebnek tűnik.
Tud valaki egy jó könyvet?  (C++ ban nem merem elkezdeni, meg a Java -t már jobban ismerem)
|
|
|
TY!
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
|
|
|
|
"Noob to Pro" mi kell Java programozáshoz?
Itt leginkább a legegyszerűbb és legkevesebb helyet foglaló programra, meg tutorial linkekre gondolnék.
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
|
|
|
És valóban  Valószínűleg 5x el fogok majd akadni közben de azért nem tűnik vészesnek ez a java.
|
|
|
a windowbuilderrel nem csak gwt-t lehet, swinget es swt-t is.
|
|
|
Közben rájöttem, hogy a linkelt plugin az webes java alkalmazásokhoz van, úgyhogy úgy döntöttem, inkább kódból rakom össze a swing guit.
|
|
|
Sztem ez igy jo. Erdemes ezeket hasznalni.
|
|
|
Javaban kéne összeraknom egy platformfüggetlen progit, amivel egy sqlite adatbázist lehet módosítgatni. A gui-nak képesnek kéne lennie png-t megjeleníteni és az sem ártana, ha a program képes lenne könyvátart létrehozni illetve fájlokat másolni.
Mivel a javaval még abszolút nem foglalkoztam, a kérdés, hogy milyen fejlesztőkörnyezetet használjak hozzá, mivel csináljam a gui-t, és mennyire lesz a végtermék így platformfüggetlen.
Amit összegúgliztam, hogy az eclipse WindowBuilder pluginel egy jó választás lehet a gui-hoz, és sqlite-hoz is találtam egy java drivert (SQLiteJDBC). Ezekkel tényleg érdemes foglalkozni, vagy tudtok jobbat?
|
|
|
Van egy Listener/Dispatcher(mindegy minek nevezzük, ez bind()-el és listen()-el egy portot, és accept()-eli a bejövő kérelmeket) osztályod, ami fogadja a bejövő kapcsolatokat, és mindegyiket átadja egy külön szálnak.
Ez az osztály nyugodtan használható arra, hogy beolvasson a konzolról, miután elvégezte a hálózati teendőit. De rakhatod külön szálra is, a te döntésed.
Arra figyelj, hogy ha külön szálra rakod, akkor bonyolultabb a közös erőforrások módosítása.
És természetesen a konzolról való olvasás nem lehet blokkoló.
Tegyük fel, hogy van egy parancsod:
Kód: set maxUser 10
Ami beállítja a maximális kliens számot 10-re. Mivel a konzolod másik szálban fut, mint a Dispatcher, ezért nem állíthatja át közvetlenül a Dispatchered maxUser változóját, hanem szinkronizálni kell a hozzáférést.
Minden kapcsolódó kliensnek egy szálat kiosztani a feldolgozáshoz egy nagyon jó ujjgyakorlat, de javaslom, ha elkészültél vele, lépj tovább.
Kezdetben minden usernek te magad allokálj egy szálat. Azután használj ThreadPoolExecutor-t. Ez a már nem használt szálakat újrahasznosítja, így jelentős erőforrásokat spórol meg neked (egy szál létrehozása drága mulatság).
Azután dobd el a többszálasított verziót, és használd a java nonblocking IO-ban levő Selector osztályt. Itt egy nagyon jó leírás hozzá: link
A Selector segítségével 1 szálban foglalkozhatsz több ezer klienssel. Sokkal hatékonyabb.
Aztán ha ezzel is megvagy, ezt is lehet még többszálasítani
A fent leírtakat csak akkor járd végig, ha tanulni, gyakorolni és nagyon hasznos tapasztalatokat szerezni szeretnél.
Ha van egy konkrét feladatod, határidővel stb, akkor, ahogy zeller is említette, használj meglévő libet: Mina, Netty stb.
|
|
|
Hazudnek, ha azt mondanam, hogy teljesen ertheto a kerdesed (szamomra). A kozos eroforrasokat nem szalasitani kell, hanem megvedeni a konkurrens hozzaferestol, szinkronizalassal. Ez egy eleg hosszu tema, aminek nem art utanamenned, ha tobbszalu kornyezetben akarsz fejleszteni.
De szerintem nem szukseges feltalalnod a spanyolviaszt, kismillio ingyenes java alkalmazasszerver van a piacon, es biztos naluk kevesebbet tudo http szerver implementaciok is akadnak.
|
|
|
Sziasztok!
Olyan kérdésem lenne, hogy egy multiklienses java szervert kezdtem írni, melynek van egy grafikus parancssora, oda lehet bepötyögni bár parancsot. Na most, ehhez a szerverhez szeretnék csatlakozni másik programmal, persze többel is egyszerre. Ugye ha sockettel csatlakozok, akkor szálasítani kell a szervert, hogy egyszerre több klienssel is tudjon dolgozni. A kérdésem, hogy a "parancssort" is külön szálra kell rakni, hogy ne zavarjon be a dologba? Még új ez a szálasítás
|
|
|
De lehet, csak ez kicsit bonyolutabb. Az altalad definialt enum tipus a java Enum osztaly egy gyerekeve fordul, ami annyit jelent, hogy az enum is egy osztaly, tehat mezoket deklaralhatsz neki.
A szabalyok, hogy a ctora mindig privat (vagy package) kell legyen es az osszes mezojet szettelnie kell.
Pl:
Kód: enum Kolbasz {
GYULAI(1000), CSABAI(2000);
int ar;
private Kolbasz(int ar) {
this.ar=ar;
}
}
Olvasnivalo: http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
|
|
|
sziasztok!
Java-ban az enum típushoz nem lehet egész értéket társítani, mint c++-ban?
|
|
|
Köszönöm a segítséget.
A kódírás amúgy a fejlesztés egyik folyamata csak. Először ronda, de működik a kód, majd később szebb és tökéletesebb lesz.
De át fogom nézni a Java konvenciót, már találtam is hozzá egy pdf-et  .
|
|
|
Bemásoltál két kódrészletet: az egyik egy konstruktor, a másik pedig annak meghívása. Szerintem a baki ezeken a kódrészeken kívül történik.
Nem lehet, hogy a
Kód: modell_vector.add(new Modell_part(modell_part_name, My_buffers, points, _nrOfIndices));
után módosítod a points objektumot? Szerintem ez volt a gondod. Egyszerűen módosítod azt az objektumot, amire hivatkozik az összes Modell_part objektumod. A buffer meg azért nem változik, mert azt vagy nem módosítod, vagy abból újat példányosítasz, és okosan, azt adod át a konstruktornak.
Javaslom ezt a helyzetet a konstruktorban kezeld le, ne annak meghívásán kívül. A konstruktorban másold le azokat az objektumokat, amiket kívülről kapsz meg, így az objektumod nem fog függeni semmilyen külső implementációtól.
A kódod amúgy ritka ronda, nem irigyellek  .
Kód: this.normalBuffer = My_buffers._normalBuffer;
Bármelyik Java programozó ránéz erre a sorra, kontextustól függetlenül, és azt mondja, hogy a My_buffers egy osztály, aminek a _normalBuffer egy statikus tagja. Aztán megnézi az argumentum listát, és mégsem így van...
Használd a Java konvenciót magad és mások érdekében. Nézz utána mi az.
Én is ArrayListet használok minden esetben, Vector a múlté, zeller nagyon jól kifejtette a főbb indokokat.
|
|
|
Margora:
Attol meg, hogy egy kontener szalbiztos, a muveleteidet is azza kell tenni.
Az, hogy hogyan noveli egy kontener a meretet, hacsak nincsen a JLS-ben kobe vesve, akkor JDK(/JVM) implementacio fuggo.
|
|
|
Köszi Zeller a választ, valóban kicsit ködösítetten fogalmaztam meg a kérdésem, mert nem volt időm rá, de nem akartam növelni a változóim értékét, hanem mindig a modelljeim középpontját, vertexek pontját stb. akartam hozzáadni az aktuális modell részéhez, s a gondom az volt, hogy a legutoljára hozzáadott értéket kapta meg az összes modell rész. lásd lejjebb:
vektor(i) [20.0,20.0,20.0]
vektor(i+1) [20.0,20.0,20.0]
vektor(i+2) [20.0,20.0,20.0] //Az utoljára hozzáadott értékét veszi át a feljebb levő értékek
Itt az arraylist és a vector közötti külömbség amúgy:
http://www.javaworld.com/javaworld/javaqa/2001-06/03-qa-0622-vector.html
Nekem a Synchronization eleje és a Data growth vége győzött meg, hogy a vektort válasszam, de ki tudja lehet áttérek az arraylist/linked list/lehet sima tömböt fogok használni  . Meglátjuk, minden esetre mégegyszer köszönöm a válaszod.
|
|
|
Nem egeszen ertelek, de talan a problemadra tudom a valaszt.
A
Kód: points = null;
olcsobban nullazza a referenciat.
Akarhanyszor uj elemet adsz a vektornak, egy uj objektum peldanyt dobj be neki.
Javaban minden objektum valtozo referencia tipusu (csak a primitiv tipusok tartalmaznak kozvetlenul erteket). Amikor egy objektumot argumentumkent adsz at, akkor a cimet tartalmazo valtozo masolatat adod at igazabol. (A parameteratadas mindig pass-by-value.)
Szoval ha az elozohoz kepest akarod megnovelni az objektum valtozoinak ertekeit, akkor eloszor masold le, majd a masolathoz add hozza a dolgokat es ezt tedd be a vektorba.
Ja es Vector helyett hasznalt ArrayListet, ha nem kell szalbiztos legyen az alkalmazas, mar ha eddig a Vector classra utaltal.
|
|
|
Problem Solved.
Az utolsó részemen elgondolkodtam, és kipróbáltam ezt:
Kód: points = new Modell_points();
"Tehát megszüntetem a hivatkozást." Viszont még mindig érthetetlen számomra, hogy a Bufferek miért nem változtak meg.  Ötlet?
ui.: Vagy ezen sorok után is "elveszti a refferenciát"? Hiszen magához az objektumhoz nem érek.
Kód: ByteBuffer vbb = ByteBuffer
.allocateDirect(My_arrays._vertex_array.length * 4);
vbb.order(ByteOrder.nativeOrder());
My_buffers._vertexBuffer = vbb.asFloatBuffer();
Ezt azért jó lenne kideríteni, remélem valaki ezt meg tudja magyarázni. Köszönöm.
Ezt a hozzászólást Joderida módosította (2011.11.04 11:51 GMT+1 óra, ---)
|
|
|
Sziasztok!
Megakadtam egy Androidos játék fejlesztése során, röviden egy vektorban tárolom az objektumom részeit-egy-két adatot róla.
Ezt hívom meg:
Kód: modell_vector.add(new Modell_part(modell_part_name, My_buffers, points, _nrOfIndices));
És itt a kód amivel gondom van:
Kód: public Modell_part(String modell_part_name,
Loader_buffer_class My_buffers, Modell_points points,
int _nrOfIndices) {
this.modell_part_name = modell_part_name;
this.indexBuffer = My_buffers._indexBuffer;
this.normalBuffer = My_buffers._normalBuffer;
this.texturBuffer = My_buffers._texturBuffer;
this.vertexBuffer = My_buffers._vertexBuffer;
this.mshiarray = My_buffers._mshiarray;
this.mambarray = My_buffers._mambarray;
this.mdiffarray = My_buffers._mdiffarray;
this.mspecarray = My_buffers._mspecarray;
this._modell_part_center_point = points._modell_center_point;
this._modell_part_left_point = points._modell_left_point;
this._modell_part_right_point = points._modell_right_point;
this._modell_part_top_point = points._modell_top_point;
this._modell_part_bottom_point = points._modell_bottom_point;
this._modell_part_front_point = points._modell_front_point;
this._modell_part_back_point = points._modell_back_point;
this.nrOfIndices = _nrOfIndices;
(A points,My_buffers azok objektumok)
Mint lehet látni tárolom a vertexeket, indexeket, normálokat, textúra koordinátákat, a nevét a modellnek, és amivel gondom van a "nevezetes pontjait", amit egy algoritmussal számolok ki.
A problémám az az lenne, hogy, ha a modellem több részből áll, akkor fellülíródnak ezek a pontok, de a bufferek azok megmaradnak. Számomra érthetetlen módon, mivel mindegyiket egyformán kezelem, csak az a külömbség, hogy az egyik Buffer típusú a másik meg (egy dimenziós) tömb.
pl.:
Tehát, ha a vektor(i) modell résznek [0.0,0.0,0.0]-k voltak középpontjának a koordinátái, akkor a következő modell rész betöltése a vetkorba felülírja azt(vektor)(i+1)-nek adom a [10.0,10.0,10.0]-t:
vektor(i+1) modell rész [10.0,10.0,10.0]
(vissza nézve az i. elemet)
vektor(i) modell rész [10.0,10.0,10.0]
Ha ismét hozzáadok egy elemet pl.: [20.0,20.0,20.0]
akkor így alakulnak:
vektor(i) [20.0,20.0,20.0]
vektor(i+1) [20.0,20.0,20.0]
vektor(i+2) [20.0,20.0,20.0]
és így tovább...
Viszont a Buffereket nem írja fellül.
Lehet már én nem látom a fát az erdő miatt, remélem tudtok segíteni, köszönöm előre is.
/*ui.: Szerintem a gondom az lenne, hogy mivel elviekben objektumot adok át a tárolásra, így hát refferencia szerinti átadás történik valamiért ez nem hat ki a Bufferekre, annál inkább kihat a tömbökre, hogy lehetne megoldani, hogy ne egyesével adjam át a tömböket, de mégis a konstruktor tárolni tudja azokat. */
Ezt a hozzászólást Joderida módosította (2011.11.04 11:23 GMT+1 óra, ---)
|
|
|
Ok, igazad van, csak szorszalat akarok hasogatni. Vegulis a Method is egy osztaly, amely rendelkezik a szukseges fuggvennyel...
----
Ja, par hettel ezelott hulyeseget irtam a szerializacioval kapcsolatban. Nem a defaultRead/WriteObjectet kell implementalni, hanem a read/writeObjectet...
----
Update:
java7ben van fp:
http://www.baptiste-wicht.com/2010/04/java-7-more-dynamics
Ezt a hozzászólást zeller módosította (2011.10.26 10:12 GMT+1 óra, ---)
|
|
|
Akkor hagyd el a finalt  Amióta Scalazom, mindenhova odateszem, ha nincs ok az ellenkezőjére.
A függvénypointer egy ptr, ami függvényre mutat. Ilyen explicite nincs Javaban. De van referenciád, ami mutathat egy objektumra, ami rendelkezik a neked szükséges függvénnyel. Nem látok különbséget.
|
|
|
Hat azert en erre nem mondanam, hogy fp. Ez a strategia minta.
Egyebkent ha finalra deklaraltad a referenciat, akkor nem veszik el a dinamikussag? (Azaz nem lehet a referenciat egy masik osztalyra allitani).
Ha szigoruan nezve a nyelvi lehetosegeket nezzuk a Methoddal jarsz a legkozelebb, csak a reflection miatt a sebesseg csokken, a tipusbiztossag bukik es egy csomo exceptiont le kell kezelni.
|
|
|
Nem tudom biztosra mit szeretnél, de vannak Javaban "függvénypointerek".
Kód: interface Func {
void apply();
}
class MenuPoint {
private final Func myFuncPointer;
MenuPoint( Func func ) { myFuncPointer = func; }
}
class Valami implements Func {
@Override public void apply() {/**valami implementáció*/}
}
..
MenuPoint mp = ....
mp.myFuncPointer.apply();
Tömörebb kódot kapsz, ha anonymous inner classokat használsz.
Kód: MenuPoint mp = new MenuPoint( new Func() {
@Override public void apply() {/**valami*/}
});
|
|
|
Szinte semmi, ez sztem az egyik legnagyobb hianyossaga a nyelvnek. A Reflection API Method osztalyat nezd meg.
A vezerelt menut esetleg command patternnel is megoldhatod delegate nelkul is.
|
|
|
sziasztok!
Java-ban mi a függvénypointer (c++) megfelelője? (Ilyen vezérelt menüt akarok írni.)
|
|
|
Egy objektum tudja magát serializálni.
Az lesz a gond szerintem, hogy az adott osztály tartalmaz olyan fieldet, ami nem implementálja a Serializable-t.
Kód: class A implements Serializable {
B b;
C c;
}
Ebben az esetben NotSerializableException-t kapsz, ha B vagy C osztályok nem Serializálhatóak. A transient módosító megoldja a problémát, de akkor deserializációkor a te felelősséged lesz az adott fieldnek megfelelő érték megadása.
|
|
|
Nem egeszen ertelek...
Ha felul akarod irni a default szerializalast, akkor a defaultWriteObject() ill a defaultReadObject() metodusokat kell megirnod az osztalyon. (Ezen felul adj meg egy serialversion UID-t, hogy a kompatibilitassal ne legyen majd bajod). A Serializable interface-t implementaltad? Mi a pontos stacktrace es a cause?
A szerializalas vezenylesere mindenkeppen hasznalj egy kulso osztalyt, bar elvileg nem lehetne gond, hogy sajat magan legyen az objektum kiirasa.
|
|
|
Sziasztok!
Megint lenne egy rövid kérdésem:
Egy objektum tudja önmagát szerializálni?
Tehát az osztályban lehet egy save() metódus, ami önmagát (this) leszerializálja, vagy ez hülyeség? (Én így implementálva a dolgokat java.io.NotSerializableException hibát kapok, és azt sejtem, hogy ezen okból.)
Ha ez így nem jó, akkor csináljak az adott osztályhoz egy serializer osztályt, és ott implementáljam a save metódust?
|
|
|
Legújabb project:
Smashed Potatoes
Legutóbb frissített project:
Smashed Potatoes
Friss kép a galériából:
|