Abstract constant in java Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Data science time! April 2019 and salary with experience The Ask Question Wizard is Live!How to intentionally cause a custom java compiler warning message?force subclasses to include constant in abstract java classIs Java “pass-by-reference” or “pass-by-value”?How do I efficiently iterate over each entry in a Java Map?What is the best way to implement constants in Java?How do I read / convert an InputStream into a String in Java?When to use LinkedList over ArrayList in Java?How do I generate random integers within a specific range in Java?Why can't I define a static method in a Java interface?How do I convert a String to an int in Java?Creating a memory leak with JavaHow should I have explained the difference between an Interface and an Abstract class?
What does 丫 mean? 丫是什么意思?
How were pictures turned from film to a big picture in a picture frame before digital scanning?
What are the discoveries that have been possible with the rejection of positivism?
What's the meaning of "fortified infraction restraint"?
An adverb for when you're not exaggerating
Maximum summed subsequences with non-adjacent items
Is it possible for SQL statements to execute concurrently within a single session in SQL Server?
Significance of Cersei's obsession with elephants?
Central Vacuuming: Is it worth it, and how does it compare to normal vacuuming?
What would you call this weird metallic apparatus that allows you to lift people?
How to save space when writing equations with cases?
Is there hard evidence that the grant peer review system performs significantly better than random?
Is CEO the "profession" with the most psychopaths?
What is the chair depicted in Cesare Maccari's 1889 painting "Cicerone denuncia Catilina"?
Karn the great creator - 'card from outside the game' in sealed
Do I really need to have a message in a novel to appeal to readers?
How to write capital alpha?
Lagrange four-squares theorem --- deterministic complexity
Crossing US/Canada Border for less than 24 hours
Google .dev domain strangely redirects to https
The Nth Gryphon Number
How to compare two different files line by line in unix?
What does it mean that physics no longer uses mechanical models to describe phenomena?
Does the Mueller report show a conspiracy between Russia and the Trump Campaign?
Abstract constant in java
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)
Data science time! April 2019 and salary with experience
The Ask Question Wizard is Live!How to intentionally cause a custom java compiler warning message?force subclasses to include constant in abstract java classIs Java “pass-by-reference” or “pass-by-value”?How do I efficiently iterate over each entry in a Java Map?What is the best way to implement constants in Java?How do I read / convert an InputStream into a String in Java?When to use LinkedList over ArrayList in Java?How do I generate random integers within a specific range in Java?Why can't I define a static method in a Java interface?How do I convert a String to an int in Java?Creating a memory leak with JavaHow should I have explained the difference between an Interface and an Abstract class?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I would like to create a constant not implemented in super class in order to force subclasses to implement it. The best solution that I've found (on this topic) is to create an abstract method that will return the constant value. I assume that it is impossible to do something like:
abstract final static String Name;
But I still have hope because Java uses something like this in Serializable interface with the serialVersionUID. Did someone know how did they do this? Is it possible to reproduce it in my own class?
java
|
show 1 more comment
I would like to create a constant not implemented in super class in order to force subclasses to implement it. The best solution that I've found (on this topic) is to create an abstract method that will return the constant value. I assume that it is impossible to do something like:
abstract final static String Name;
But I still have hope because Java uses something like this in Serializable interface with the serialVersionUID. Did someone know how did they do this? Is it possible to reproduce it in my own class?
java
the question is how is this solved with serialVersionUID? So it's possible somehow...
– Philipp Sander
Mar 19 at 10:42
4
FYI, in theSerializable
case it's the runtime that wants theserialVersionUID
, not the compiler. A class that implementsSerializable
and doesn't have that field compiles just fine.
– Federico klez Culloca
Mar 19 at 10:42
Also,serialVersionUID
is not mandatory for the runtime, either. If it doesn't exist, the serialization mechanism calculates it.
– RealSkeptic
Mar 19 at 10:47
Even if it is not mandatory, it still ask for it. The serialVersionIUD is not the exact solution that I want, but it come close to it.
– Julien Maret
Mar 19 at 10:54
@JulienMaret are you more concerned with emitting a warning if it is not there or do you want to get a default value if it is not? Or both?
– Captain Man
Mar 19 at 15:06
|
show 1 more comment
I would like to create a constant not implemented in super class in order to force subclasses to implement it. The best solution that I've found (on this topic) is to create an abstract method that will return the constant value. I assume that it is impossible to do something like:
abstract final static String Name;
But I still have hope because Java uses something like this in Serializable interface with the serialVersionUID. Did someone know how did they do this? Is it possible to reproduce it in my own class?
java
I would like to create a constant not implemented in super class in order to force subclasses to implement it. The best solution that I've found (on this topic) is to create an abstract method that will return the constant value. I assume that it is impossible to do something like:
abstract final static String Name;
But I still have hope because Java uses something like this in Serializable interface with the serialVersionUID. Did someone know how did they do this? Is it possible to reproduce it in my own class?
java
java
edited Mar 19 at 11:01
zb226
5,81032954
5,81032954
asked Mar 19 at 10:37
Julien MaretJulien Maret
1339
1339
the question is how is this solved with serialVersionUID? So it's possible somehow...
– Philipp Sander
Mar 19 at 10:42
4
FYI, in theSerializable
case it's the runtime that wants theserialVersionUID
, not the compiler. A class that implementsSerializable
and doesn't have that field compiles just fine.
– Federico klez Culloca
Mar 19 at 10:42
Also,serialVersionUID
is not mandatory for the runtime, either. If it doesn't exist, the serialization mechanism calculates it.
– RealSkeptic
Mar 19 at 10:47
Even if it is not mandatory, it still ask for it. The serialVersionIUD is not the exact solution that I want, but it come close to it.
– Julien Maret
Mar 19 at 10:54
@JulienMaret are you more concerned with emitting a warning if it is not there or do you want to get a default value if it is not? Or both?
– Captain Man
Mar 19 at 15:06
|
show 1 more comment
the question is how is this solved with serialVersionUID? So it's possible somehow...
– Philipp Sander
Mar 19 at 10:42
4
FYI, in theSerializable
case it's the runtime that wants theserialVersionUID
, not the compiler. A class that implementsSerializable
and doesn't have that field compiles just fine.
– Federico klez Culloca
Mar 19 at 10:42
Also,serialVersionUID
is not mandatory for the runtime, either. If it doesn't exist, the serialization mechanism calculates it.
– RealSkeptic
Mar 19 at 10:47
Even if it is not mandatory, it still ask for it. The serialVersionIUD is not the exact solution that I want, but it come close to it.
– Julien Maret
Mar 19 at 10:54
@JulienMaret are you more concerned with emitting a warning if it is not there or do you want to get a default value if it is not? Or both?
– Captain Man
Mar 19 at 15:06
the question is how is this solved with serialVersionUID? So it's possible somehow...
– Philipp Sander
Mar 19 at 10:42
the question is how is this solved with serialVersionUID? So it's possible somehow...
– Philipp Sander
Mar 19 at 10:42
4
4
FYI, in the
Serializable
case it's the runtime that wants the serialVersionUID
, not the compiler. A class that implements Serializable
and doesn't have that field compiles just fine.– Federico klez Culloca
Mar 19 at 10:42
FYI, in the
Serializable
case it's the runtime that wants the serialVersionUID
, not the compiler. A class that implements Serializable
and doesn't have that field compiles just fine.– Federico klez Culloca
Mar 19 at 10:42
Also,
serialVersionUID
is not mandatory for the runtime, either. If it doesn't exist, the serialization mechanism calculates it.– RealSkeptic
Mar 19 at 10:47
Also,
serialVersionUID
is not mandatory for the runtime, either. If it doesn't exist, the serialization mechanism calculates it.– RealSkeptic
Mar 19 at 10:47
Even if it is not mandatory, it still ask for it. The serialVersionIUD is not the exact solution that I want, but it come close to it.
– Julien Maret
Mar 19 at 10:54
Even if it is not mandatory, it still ask for it. The serialVersionIUD is not the exact solution that I want, but it come close to it.
– Julien Maret
Mar 19 at 10:54
@JulienMaret are you more concerned with emitting a warning if it is not there or do you want to get a default value if it is not? Or both?
– Captain Man
Mar 19 at 15:06
@JulienMaret are you more concerned with emitting a warning if it is not there or do you want to get a default value if it is not? Or both?
– Captain Man
Mar 19 at 15:06
|
show 1 more comment
5 Answers
5
active
oldest
votes
serialVersionUID
field presence is not enforced by the Serializable
interface because interface can't enforce presence of a field. You can declare a class which implements Serializable
, it will compile just fine without serialVersionUID
field being there.
The check for serialVersionUID
field is hardcoded in the tools. One example is JDK java.io.ObjectStreamClass.getSerialVersionUID()
methods that loads the serialVersionUID
value with reflection:
/**
* Returns explicit serial version UID value declared by given class, or
* null if none.
*/
private static Long getDeclaredSUID(Class<?> cl)
try Modifier.FINAL;
if ((f.getModifiers() & mask) == mask)
f.setAccessible(true);
return Long.valueOf(f.getLong(null));
catch (Exception ex)
return null;
add a comment |
Such constant cannot be static
because static
fields are shared among all instances of the class, including instances of all subclasses.
Here is how to implement this as non-static constant:
public abstract class Foo
public final String name; // Particular value to be defined in subclass
protected Foo (String name)
this.name = name;
public class Bar extends Foo
public Bar ()
super ("Zoo"); // Here we define particular value for the constant
BTW, serialVersionUID
is not a part of Serializable
interface.
add a comment |
I wouldn't recommend it but if you need it so much you could create a regex check in Checkstyle and force people to implement the static variable
@JulienMaret Checkstyle is not just an Eclipse plugin. It can also be part of your build process like Maven. I don't think this is a good solution but just want to point out it is not actually IDE specific.
– Captain Man
Mar 19 at 15:07
add a comment |
When a class implementing Serializable
does not have a serialVersionUID
the little message you see in your IDE and while compiling is a warning emitted by javac
. If you want to create something like that you can but the process seems complicated. The solution is here in this answer.
They go into detail but the general idea is to create an annotation and annotation processor and use the annotation processor during compilation. I'm guessing you could use reflection (or... not reflection since it is compile time?) to see if the annotated class contains the field you want.
add a comment |
Here the best way I found to simulate it. Javadoc prevent prevent a bit to bad extends... but id subclass dont have NAME it will just fail to execute
public abstract class Foo
protected final String NAME;
public Foo() SecurityException
public class Bar extends Foo
public static final String NAME = "myName";
Are you sure the code will not compile? Your code looks like it will not only compile, but also run without error since you catch the exception ?
– Falco
Mar 19 at 14:28
I think you would want to setNAME
toFoo.NAME
in the catch block, right? That way if they don't "override" it it will use the "default"?
– Captain Man
Mar 19 at 15:11
Why are you passing the emptyString
referenced byname
to theget
method declared by your (sub)class? That’s obviously never the right object for this operation. And when you have checked thatNAME
does exist, what do you gain from that? Are you aware that this code will break when you create a subclass ofBar
?
– Holger
Mar 19 at 16:06
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55238966%2fabstract-constant-in-java%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
5 Answers
5
active
oldest
votes
5 Answers
5
active
oldest
votes
active
oldest
votes
active
oldest
votes
serialVersionUID
field presence is not enforced by the Serializable
interface because interface can't enforce presence of a field. You can declare a class which implements Serializable
, it will compile just fine without serialVersionUID
field being there.
The check for serialVersionUID
field is hardcoded in the tools. One example is JDK java.io.ObjectStreamClass.getSerialVersionUID()
methods that loads the serialVersionUID
value with reflection:
/**
* Returns explicit serial version UID value declared by given class, or
* null if none.
*/
private static Long getDeclaredSUID(Class<?> cl)
try Modifier.FINAL;
if ((f.getModifiers() & mask) == mask)
f.setAccessible(true);
return Long.valueOf(f.getLong(null));
catch (Exception ex)
return null;
add a comment |
serialVersionUID
field presence is not enforced by the Serializable
interface because interface can't enforce presence of a field. You can declare a class which implements Serializable
, it will compile just fine without serialVersionUID
field being there.
The check for serialVersionUID
field is hardcoded in the tools. One example is JDK java.io.ObjectStreamClass.getSerialVersionUID()
methods that loads the serialVersionUID
value with reflection:
/**
* Returns explicit serial version UID value declared by given class, or
* null if none.
*/
private static Long getDeclaredSUID(Class<?> cl)
try Modifier.FINAL;
if ((f.getModifiers() & mask) == mask)
f.setAccessible(true);
return Long.valueOf(f.getLong(null));
catch (Exception ex)
return null;
add a comment |
serialVersionUID
field presence is not enforced by the Serializable
interface because interface can't enforce presence of a field. You can declare a class which implements Serializable
, it will compile just fine without serialVersionUID
field being there.
The check for serialVersionUID
field is hardcoded in the tools. One example is JDK java.io.ObjectStreamClass.getSerialVersionUID()
methods that loads the serialVersionUID
value with reflection:
/**
* Returns explicit serial version UID value declared by given class, or
* null if none.
*/
private static Long getDeclaredSUID(Class<?> cl)
try Modifier.FINAL;
if ((f.getModifiers() & mask) == mask)
f.setAccessible(true);
return Long.valueOf(f.getLong(null));
catch (Exception ex)
return null;
serialVersionUID
field presence is not enforced by the Serializable
interface because interface can't enforce presence of a field. You can declare a class which implements Serializable
, it will compile just fine without serialVersionUID
field being there.
The check for serialVersionUID
field is hardcoded in the tools. One example is JDK java.io.ObjectStreamClass.getSerialVersionUID()
methods that loads the serialVersionUID
value with reflection:
/**
* Returns explicit serial version UID value declared by given class, or
* null if none.
*/
private static Long getDeclaredSUID(Class<?> cl)
try Modifier.FINAL;
if ((f.getModifiers() & mask) == mask)
f.setAccessible(true);
return Long.valueOf(f.getLong(null));
catch (Exception ex)
return null;
edited Mar 19 at 13:08
answered Mar 19 at 10:38
Karol DowbeckiKarol Dowbecki
26.9k93860
26.9k93860
add a comment |
add a comment |
Such constant cannot be static
because static
fields are shared among all instances of the class, including instances of all subclasses.
Here is how to implement this as non-static constant:
public abstract class Foo
public final String name; // Particular value to be defined in subclass
protected Foo (String name)
this.name = name;
public class Bar extends Foo
public Bar ()
super ("Zoo"); // Here we define particular value for the constant
BTW, serialVersionUID
is not a part of Serializable
interface.
add a comment |
Such constant cannot be static
because static
fields are shared among all instances of the class, including instances of all subclasses.
Here is how to implement this as non-static constant:
public abstract class Foo
public final String name; // Particular value to be defined in subclass
protected Foo (String name)
this.name = name;
public class Bar extends Foo
public Bar ()
super ("Zoo"); // Here we define particular value for the constant
BTW, serialVersionUID
is not a part of Serializable
interface.
add a comment |
Such constant cannot be static
because static
fields are shared among all instances of the class, including instances of all subclasses.
Here is how to implement this as non-static constant:
public abstract class Foo
public final String name; // Particular value to be defined in subclass
protected Foo (String name)
this.name = name;
public class Bar extends Foo
public Bar ()
super ("Zoo"); // Here we define particular value for the constant
BTW, serialVersionUID
is not a part of Serializable
interface.
Such constant cannot be static
because static
fields are shared among all instances of the class, including instances of all subclasses.
Here is how to implement this as non-static constant:
public abstract class Foo
public final String name; // Particular value to be defined in subclass
protected Foo (String name)
this.name = name;
public class Bar extends Foo
public Bar ()
super ("Zoo"); // Here we define particular value for the constant
BTW, serialVersionUID
is not a part of Serializable
interface.
edited Mar 19 at 10:50
answered Mar 19 at 10:43
Mikhail VladimirovMikhail Vladimirov
11.4k12631
11.4k12631
add a comment |
add a comment |
I wouldn't recommend it but if you need it so much you could create a regex check in Checkstyle and force people to implement the static variable
@JulienMaret Checkstyle is not just an Eclipse plugin. It can also be part of your build process like Maven. I don't think this is a good solution but just want to point out it is not actually IDE specific.
– Captain Man
Mar 19 at 15:07
add a comment |
I wouldn't recommend it but if you need it so much you could create a regex check in Checkstyle and force people to implement the static variable
@JulienMaret Checkstyle is not just an Eclipse plugin. It can also be part of your build process like Maven. I don't think this is a good solution but just want to point out it is not actually IDE specific.
– Captain Man
Mar 19 at 15:07
add a comment |
I wouldn't recommend it but if you need it so much you could create a regex check in Checkstyle and force people to implement the static variable
I wouldn't recommend it but if you need it so much you could create a regex check in Checkstyle and force people to implement the static variable
edited Mar 19 at 15:08
Captain Man
3,29932855
3,29932855
answered Mar 19 at 10:52
ave4496ave4496
1,49031436
1,49031436
@JulienMaret Checkstyle is not just an Eclipse plugin. It can also be part of your build process like Maven. I don't think this is a good solution but just want to point out it is not actually IDE specific.
– Captain Man
Mar 19 at 15:07
add a comment |
@JulienMaret Checkstyle is not just an Eclipse plugin. It can also be part of your build process like Maven. I don't think this is a good solution but just want to point out it is not actually IDE specific.
– Captain Man
Mar 19 at 15:07
@JulienMaret Checkstyle is not just an Eclipse plugin. It can also be part of your build process like Maven. I don't think this is a good solution but just want to point out it is not actually IDE specific.
– Captain Man
Mar 19 at 15:07
@JulienMaret Checkstyle is not just an Eclipse plugin. It can also be part of your build process like Maven. I don't think this is a good solution but just want to point out it is not actually IDE specific.
– Captain Man
Mar 19 at 15:07
add a comment |
When a class implementing Serializable
does not have a serialVersionUID
the little message you see in your IDE and while compiling is a warning emitted by javac
. If you want to create something like that you can but the process seems complicated. The solution is here in this answer.
They go into detail but the general idea is to create an annotation and annotation processor and use the annotation processor during compilation. I'm guessing you could use reflection (or... not reflection since it is compile time?) to see if the annotated class contains the field you want.
add a comment |
When a class implementing Serializable
does not have a serialVersionUID
the little message you see in your IDE and while compiling is a warning emitted by javac
. If you want to create something like that you can but the process seems complicated. The solution is here in this answer.
They go into detail but the general idea is to create an annotation and annotation processor and use the annotation processor during compilation. I'm guessing you could use reflection (or... not reflection since it is compile time?) to see if the annotated class contains the field you want.
add a comment |
When a class implementing Serializable
does not have a serialVersionUID
the little message you see in your IDE and while compiling is a warning emitted by javac
. If you want to create something like that you can but the process seems complicated. The solution is here in this answer.
They go into detail but the general idea is to create an annotation and annotation processor and use the annotation processor during compilation. I'm guessing you could use reflection (or... not reflection since it is compile time?) to see if the annotated class contains the field you want.
When a class implementing Serializable
does not have a serialVersionUID
the little message you see in your IDE and while compiling is a warning emitted by javac
. If you want to create something like that you can but the process seems complicated. The solution is here in this answer.
They go into detail but the general idea is to create an annotation and annotation processor and use the annotation processor during compilation. I'm guessing you could use reflection (or... not reflection since it is compile time?) to see if the annotated class contains the field you want.
answered Mar 19 at 15:04
Captain ManCaptain Man
3,29932855
3,29932855
add a comment |
add a comment |
Here the best way I found to simulate it. Javadoc prevent prevent a bit to bad extends... but id subclass dont have NAME it will just fail to execute
public abstract class Foo
protected final String NAME;
public Foo() SecurityException
public class Bar extends Foo
public static final String NAME = "myName";
Are you sure the code will not compile? Your code looks like it will not only compile, but also run without error since you catch the exception ?
– Falco
Mar 19 at 14:28
I think you would want to setNAME
toFoo.NAME
in the catch block, right? That way if they don't "override" it it will use the "default"?
– Captain Man
Mar 19 at 15:11
Why are you passing the emptyString
referenced byname
to theget
method declared by your (sub)class? That’s obviously never the right object for this operation. And when you have checked thatNAME
does exist, what do you gain from that? Are you aware that this code will break when you create a subclass ofBar
?
– Holger
Mar 19 at 16:06
add a comment |
Here the best way I found to simulate it. Javadoc prevent prevent a bit to bad extends... but id subclass dont have NAME it will just fail to execute
public abstract class Foo
protected final String NAME;
public Foo() SecurityException
public class Bar extends Foo
public static final String NAME = "myName";
Are you sure the code will not compile? Your code looks like it will not only compile, but also run without error since you catch the exception ?
– Falco
Mar 19 at 14:28
I think you would want to setNAME
toFoo.NAME
in the catch block, right? That way if they don't "override" it it will use the "default"?
– Captain Man
Mar 19 at 15:11
Why are you passing the emptyString
referenced byname
to theget
method declared by your (sub)class? That’s obviously never the right object for this operation. And when you have checked thatNAME
does exist, what do you gain from that? Are you aware that this code will break when you create a subclass ofBar
?
– Holger
Mar 19 at 16:06
add a comment |
Here the best way I found to simulate it. Javadoc prevent prevent a bit to bad extends... but id subclass dont have NAME it will just fail to execute
public abstract class Foo
protected final String NAME;
public Foo() SecurityException
public class Bar extends Foo
public static final String NAME = "myName";
Here the best way I found to simulate it. Javadoc prevent prevent a bit to bad extends... but id subclass dont have NAME it will just fail to execute
public abstract class Foo
protected final String NAME;
public Foo() SecurityException
public class Bar extends Foo
public static final String NAME = "myName";
edited Mar 19 at 14:29
answered Mar 19 at 13:26
Julien MaretJulien Maret
1339
1339
Are you sure the code will not compile? Your code looks like it will not only compile, but also run without error since you catch the exception ?
– Falco
Mar 19 at 14:28
I think you would want to setNAME
toFoo.NAME
in the catch block, right? That way if they don't "override" it it will use the "default"?
– Captain Man
Mar 19 at 15:11
Why are you passing the emptyString
referenced byname
to theget
method declared by your (sub)class? That’s obviously never the right object for this operation. And when you have checked thatNAME
does exist, what do you gain from that? Are you aware that this code will break when you create a subclass ofBar
?
– Holger
Mar 19 at 16:06
add a comment |
Are you sure the code will not compile? Your code looks like it will not only compile, but also run without error since you catch the exception ?
– Falco
Mar 19 at 14:28
I think you would want to setNAME
toFoo.NAME
in the catch block, right? That way if they don't "override" it it will use the "default"?
– Captain Man
Mar 19 at 15:11
Why are you passing the emptyString
referenced byname
to theget
method declared by your (sub)class? That’s obviously never the right object for this operation. And when you have checked thatNAME
does exist, what do you gain from that? Are you aware that this code will break when you create a subclass ofBar
?
– Holger
Mar 19 at 16:06
Are you sure the code will not compile? Your code looks like it will not only compile, but also run without error since you catch the exception ?
– Falco
Mar 19 at 14:28
Are you sure the code will not compile? Your code looks like it will not only compile, but also run without error since you catch the exception ?
– Falco
Mar 19 at 14:28
I think you would want to set
NAME
to Foo.NAME
in the catch block, right? That way if they don't "override" it it will use the "default"?– Captain Man
Mar 19 at 15:11
I think you would want to set
NAME
to Foo.NAME
in the catch block, right? That way if they don't "override" it it will use the "default"?– Captain Man
Mar 19 at 15:11
Why are you passing the empty
String
referenced by name
to the get
method declared by your (sub)class? That’s obviously never the right object for this operation. And when you have checked that NAME
does exist, what do you gain from that? Are you aware that this code will break when you create a subclass of Bar
?– Holger
Mar 19 at 16:06
Why are you passing the empty
String
referenced by name
to the get
method declared by your (sub)class? That’s obviously never the right object for this operation. And when you have checked that NAME
does exist, what do you gain from that? Are you aware that this code will break when you create a subclass of Bar
?– Holger
Mar 19 at 16:06
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55238966%2fabstract-constant-in-java%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
the question is how is this solved with serialVersionUID? So it's possible somehow...
– Philipp Sander
Mar 19 at 10:42
4
FYI, in the
Serializable
case it's the runtime that wants theserialVersionUID
, not the compiler. A class that implementsSerializable
and doesn't have that field compiles just fine.– Federico klez Culloca
Mar 19 at 10:42
Also,
serialVersionUID
is not mandatory for the runtime, either. If it doesn't exist, the serialization mechanism calculates it.– RealSkeptic
Mar 19 at 10:47
Even if it is not mandatory, it still ask for it. The serialVersionIUD is not the exact solution that I want, but it come close to it.
– Julien Maret
Mar 19 at 10:54
@JulienMaret are you more concerned with emitting a warning if it is not there or do you want to get a default value if it is not? Or both?
– Captain Man
Mar 19 at 15:06