Java - What do constructor type arguments mean when placed *before* the type?How to round a number to n decimal places in JavaWhat is the difference between public, protected, package-private and private in Java?How do I call one constructor from another in Java?When to use LinkedList over ArrayList in Java?What does 'synchronized' mean?What is the Java equivalent for LINQ?What is a daemon thread in Java?Java: when to use static methodsWhat are the -Xms and -Xmx parameters when starting JVM?What does “Could not find or load main class” mean?

Why is Arduino resetting while driving motors?

Diode in opposite direction?

Why did the EU agree to delay the Brexit deadline?

How will losing mobility of one hand affect my career as a programmer?

Frequency of inspection at vegan restaurants

Can the Supreme Court overturn an impeachment?

Translation of Scottish 16th century church stained glass

If a character with the Alert feat rolls a crit fail on their Perception check, are they surprised?

Can I sign legal documents with a smiley face?

A social experiment. What is the worst that can happen?

MAXDOP Settings for SQL Server 2014

Divine apple island

Java - What do constructor type arguments mean when placed *before* the type?

My friend sent me a screenshot of a transaction hash, but when I search for it I find divergent data. What happened?

Is it possible to use .desktop files to open local pdf files on specific pages with a browser?

Is camera lens focus an exact point or a range?

Reply 'no position' while the job posting is still there

Open a doc from terminal, but not by its name

What does this horizontal bar at the first measure mean?

Are all species of CANNA edible?

Does the Mind Blank spell prevent the target from being frightened?

On a tidally locked planet, would time be quantized?

Journal losing indexing services

Freedom of speech and where it applies



Java - What do constructor type arguments mean when placed *before* the type?


How to round a number to n decimal places in JavaWhat is the difference between public, protected, package-private and private in Java?How do I call one constructor from another in Java?When to use LinkedList over ArrayList in Java?What does 'synchronized' mean?What is the Java equivalent for LINQ?What is a daemon thread in Java?Java: when to use static methodsWhat are the -Xms and -Xmx parameters when starting JVM?What does “Could not find or load main class” mean?













7















I've recently come across this unusual (to me) Java syntax...here's an example of it:



List list = new <String, Long>ArrayList();


Notice the positioning of the <String, Long> type arguments...it's not after the type as normal but before. I don't mind admitting I've never seen this syntax before. Also note there are 2 type arguments when ArrayList only has 1.



Does the positioning of the type arguments have the same meaning as putting them after the type? If not, what does the different positioning mean?



Why is it legal to have 2 type arguments when ArrayList only has 1?



I've searched the usual places, eg. Angelika Langer and on here but can't find any mention of this syntax anywhere apart from the grammar rules in the Java grammar file on the ANTLR project.










share|improve this question






















  • Yeah so do I, I'm not asking how to create a list lol

    – Nathan Adams
    1 hour ago






  • 2





    A constructor may have type arguments that are placed there (this particular constructor hasn’t, so <String, Long> is just ignored). See Generics Constructor.

    – Ole V.V.
    1 hour ago







  • 1





    OK that makes sense, although it's weird that there's no compile error even though there's no type arguments on the constructor

    – Nathan Adams
    1 hour ago






  • 1





    No error, but you get a warning about raw types. Don't use raw types. Do use the diamond operator. List<String> list = new ArrayList<>();

    – Elliott Frisch
    1 hour ago











  • @OleV.V. if you wanna put your comment and link as an answer I'll accept it

    – Nathan Adams
    1 hour ago















7















I've recently come across this unusual (to me) Java syntax...here's an example of it:



List list = new <String, Long>ArrayList();


Notice the positioning of the <String, Long> type arguments...it's not after the type as normal but before. I don't mind admitting I've never seen this syntax before. Also note there are 2 type arguments when ArrayList only has 1.



Does the positioning of the type arguments have the same meaning as putting them after the type? If not, what does the different positioning mean?



Why is it legal to have 2 type arguments when ArrayList only has 1?



I've searched the usual places, eg. Angelika Langer and on here but can't find any mention of this syntax anywhere apart from the grammar rules in the Java grammar file on the ANTLR project.










share|improve this question






















  • Yeah so do I, I'm not asking how to create a list lol

    – Nathan Adams
    1 hour ago






  • 2





    A constructor may have type arguments that are placed there (this particular constructor hasn’t, so <String, Long> is just ignored). See Generics Constructor.

    – Ole V.V.
    1 hour ago







  • 1





    OK that makes sense, although it's weird that there's no compile error even though there's no type arguments on the constructor

    – Nathan Adams
    1 hour ago






  • 1





    No error, but you get a warning about raw types. Don't use raw types. Do use the diamond operator. List<String> list = new ArrayList<>();

    – Elliott Frisch
    1 hour ago











  • @OleV.V. if you wanna put your comment and link as an answer I'll accept it

    – Nathan Adams
    1 hour ago













7












7








7


1






I've recently come across this unusual (to me) Java syntax...here's an example of it:



List list = new <String, Long>ArrayList();


Notice the positioning of the <String, Long> type arguments...it's not after the type as normal but before. I don't mind admitting I've never seen this syntax before. Also note there are 2 type arguments when ArrayList only has 1.



Does the positioning of the type arguments have the same meaning as putting them after the type? If not, what does the different positioning mean?



Why is it legal to have 2 type arguments when ArrayList only has 1?



I've searched the usual places, eg. Angelika Langer and on here but can't find any mention of this syntax anywhere apart from the grammar rules in the Java grammar file on the ANTLR project.










share|improve this question














I've recently come across this unusual (to me) Java syntax...here's an example of it:



List list = new <String, Long>ArrayList();


Notice the positioning of the <String, Long> type arguments...it's not after the type as normal but before. I don't mind admitting I've never seen this syntax before. Also note there are 2 type arguments when ArrayList only has 1.



Does the positioning of the type arguments have the same meaning as putting them after the type? If not, what does the different positioning mean?



Why is it legal to have 2 type arguments when ArrayList only has 1?



I've searched the usual places, eg. Angelika Langer and on here but can't find any mention of this syntax anywhere apart from the grammar rules in the Java grammar file on the ANTLR project.







java grammar






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked 1 hour ago









Nathan AdamsNathan Adams

1638




1638












  • Yeah so do I, I'm not asking how to create a list lol

    – Nathan Adams
    1 hour ago






  • 2





    A constructor may have type arguments that are placed there (this particular constructor hasn’t, so <String, Long> is just ignored). See Generics Constructor.

    – Ole V.V.
    1 hour ago







  • 1





    OK that makes sense, although it's weird that there's no compile error even though there's no type arguments on the constructor

    – Nathan Adams
    1 hour ago






  • 1





    No error, but you get a warning about raw types. Don't use raw types. Do use the diamond operator. List<String> list = new ArrayList<>();

    – Elliott Frisch
    1 hour ago











  • @OleV.V. if you wanna put your comment and link as an answer I'll accept it

    – Nathan Adams
    1 hour ago

















  • Yeah so do I, I'm not asking how to create a list lol

    – Nathan Adams
    1 hour ago






  • 2





    A constructor may have type arguments that are placed there (this particular constructor hasn’t, so <String, Long> is just ignored). See Generics Constructor.

    – Ole V.V.
    1 hour ago







  • 1





    OK that makes sense, although it's weird that there's no compile error even though there's no type arguments on the constructor

    – Nathan Adams
    1 hour ago






  • 1





    No error, but you get a warning about raw types. Don't use raw types. Do use the diamond operator. List<String> list = new ArrayList<>();

    – Elliott Frisch
    1 hour ago











  • @OleV.V. if you wanna put your comment and link as an answer I'll accept it

    – Nathan Adams
    1 hour ago
















Yeah so do I, I'm not asking how to create a list lol

– Nathan Adams
1 hour ago





Yeah so do I, I'm not asking how to create a list lol

– Nathan Adams
1 hour ago




2




2





A constructor may have type arguments that are placed there (this particular constructor hasn’t, so <String, Long> is just ignored). See Generics Constructor.

– Ole V.V.
1 hour ago






A constructor may have type arguments that are placed there (this particular constructor hasn’t, so <String, Long> is just ignored). See Generics Constructor.

– Ole V.V.
1 hour ago





1




1





OK that makes sense, although it's weird that there's no compile error even though there's no type arguments on the constructor

– Nathan Adams
1 hour ago





OK that makes sense, although it's weird that there's no compile error even though there's no type arguments on the constructor

– Nathan Adams
1 hour ago




1




1





No error, but you get a warning about raw types. Don't use raw types. Do use the diamond operator. List<String> list = new ArrayList<>();

– Elliott Frisch
1 hour ago





No error, but you get a warning about raw types. Don't use raw types. Do use the diamond operator. List<String> list = new ArrayList<>();

– Elliott Frisch
1 hour ago













@OleV.V. if you wanna put your comment and link as an answer I'll accept it

– Nathan Adams
1 hour ago





@OleV.V. if you wanna put your comment and link as an answer I'll accept it

– Nathan Adams
1 hour ago












1 Answer
1






active

oldest

votes


















5














This is unusual alright, but fully valid Java. A class may have a generic constructor, for example:



public class TypeWithGenericConstructor 

public <T> TypeWithGenericConstructor(T arg)
// TODO Auto-generated constructor stub





I suppose that more often than not we don’t need to make the type argument explicit. For example:



 new TypeWithGenericConstructor(LocalDate.now(ZoneId.systemDefault()));


Now T is clearly LocalDate. However there may be cases where Java cannot infer (deduce) the type argument. Then we supply it explicitly using the syntax from your question:



 new <LocalDate>TypeWithGenericConstructor(null);


Of course we may also supply it even though it is not necessary if we think it helps readability or for whatever reason:



 new <LocalDate>TypeWithGenericConstructor(LocalDate.now(ZoneId.systemDefault()));


In your question you seem to be calling the java.util.ArrayList constructor. That constructor is not generic (only the ArrayList class as a whole is, that’s something else). Why Java allows you to supply type arguments in the call when they are not used, I don’t know, but it does. My Eclipse gives me a warning:




Unused type arguments for the non generic constructor ArrayList() of
type ArrayList; it should not be parameterized with arguments




But it’s not an error, and the program runs fine (I additionally get warnings about missing type arguments for List and ArrayList, but that again is a different story).




Does the positioning of the type arguments have the same meaning as
putting them after the type? If not, what does the different
positioning mean?




No, it’s different. The usual type argument/s after the type (ArrayList<Integer>) are for the generic class. The type arguments before are for the * constructor*.



The two forms may also be combined:



 List<Integer> list = new <String, Long>ArrayList<Integer>();


I would consider this a bit more correct since we can now see that the list stores Integer objects (I’d still prefer to leave out the meaningless <String, Long>, of course).




Why is it legal to have 2 type arguments when ArrayList only has 1?




First, if you supply type arguments before the type, you should supply the correct number for the constructor, not for the class, so it hasn’t got anything to do with how many type arguments the ArrayList class has got. That really means that in this case you shouldn’t supply any since the constructor doesn’t take type arguments (it’s not generic). When you supply some anyway, they are ignored, which is why it doesn’t matter how many or how few you supply (I repeat, I don’t know why Java allows you to supply them meaninglessly).






share|improve this answer

























  • But how it is allowing 2 arguments <String, Long>.The list will allow storing which type of data?

    – jaspreet
    36 mins ago











  • Thanks for asking, @jaspreet. Please see my edit.

    – Ole V.V.
    25 mins ago










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
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55330697%2fjava-what-do-constructor-type-arguments-mean-when-placed-before-the-type%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









5














This is unusual alright, but fully valid Java. A class may have a generic constructor, for example:



public class TypeWithGenericConstructor 

public <T> TypeWithGenericConstructor(T arg)
// TODO Auto-generated constructor stub





I suppose that more often than not we don’t need to make the type argument explicit. For example:



 new TypeWithGenericConstructor(LocalDate.now(ZoneId.systemDefault()));


Now T is clearly LocalDate. However there may be cases where Java cannot infer (deduce) the type argument. Then we supply it explicitly using the syntax from your question:



 new <LocalDate>TypeWithGenericConstructor(null);


Of course we may also supply it even though it is not necessary if we think it helps readability or for whatever reason:



 new <LocalDate>TypeWithGenericConstructor(LocalDate.now(ZoneId.systemDefault()));


In your question you seem to be calling the java.util.ArrayList constructor. That constructor is not generic (only the ArrayList class as a whole is, that’s something else). Why Java allows you to supply type arguments in the call when they are not used, I don’t know, but it does. My Eclipse gives me a warning:




Unused type arguments for the non generic constructor ArrayList() of
type ArrayList; it should not be parameterized with arguments




But it’s not an error, and the program runs fine (I additionally get warnings about missing type arguments for List and ArrayList, but that again is a different story).




Does the positioning of the type arguments have the same meaning as
putting them after the type? If not, what does the different
positioning mean?




No, it’s different. The usual type argument/s after the type (ArrayList<Integer>) are for the generic class. The type arguments before are for the * constructor*.



The two forms may also be combined:



 List<Integer> list = new <String, Long>ArrayList<Integer>();


I would consider this a bit more correct since we can now see that the list stores Integer objects (I’d still prefer to leave out the meaningless <String, Long>, of course).




Why is it legal to have 2 type arguments when ArrayList only has 1?




First, if you supply type arguments before the type, you should supply the correct number for the constructor, not for the class, so it hasn’t got anything to do with how many type arguments the ArrayList class has got. That really means that in this case you shouldn’t supply any since the constructor doesn’t take type arguments (it’s not generic). When you supply some anyway, they are ignored, which is why it doesn’t matter how many or how few you supply (I repeat, I don’t know why Java allows you to supply them meaninglessly).






share|improve this answer

























  • But how it is allowing 2 arguments <String, Long>.The list will allow storing which type of data?

    – jaspreet
    36 mins ago











  • Thanks for asking, @jaspreet. Please see my edit.

    – Ole V.V.
    25 mins ago















5














This is unusual alright, but fully valid Java. A class may have a generic constructor, for example:



public class TypeWithGenericConstructor 

public <T> TypeWithGenericConstructor(T arg)
// TODO Auto-generated constructor stub





I suppose that more often than not we don’t need to make the type argument explicit. For example:



 new TypeWithGenericConstructor(LocalDate.now(ZoneId.systemDefault()));


Now T is clearly LocalDate. However there may be cases where Java cannot infer (deduce) the type argument. Then we supply it explicitly using the syntax from your question:



 new <LocalDate>TypeWithGenericConstructor(null);


Of course we may also supply it even though it is not necessary if we think it helps readability or for whatever reason:



 new <LocalDate>TypeWithGenericConstructor(LocalDate.now(ZoneId.systemDefault()));


In your question you seem to be calling the java.util.ArrayList constructor. That constructor is not generic (only the ArrayList class as a whole is, that’s something else). Why Java allows you to supply type arguments in the call when they are not used, I don’t know, but it does. My Eclipse gives me a warning:




Unused type arguments for the non generic constructor ArrayList() of
type ArrayList; it should not be parameterized with arguments




But it’s not an error, and the program runs fine (I additionally get warnings about missing type arguments for List and ArrayList, but that again is a different story).




Does the positioning of the type arguments have the same meaning as
putting them after the type? If not, what does the different
positioning mean?




No, it’s different. The usual type argument/s after the type (ArrayList<Integer>) are for the generic class. The type arguments before are for the * constructor*.



The two forms may also be combined:



 List<Integer> list = new <String, Long>ArrayList<Integer>();


I would consider this a bit more correct since we can now see that the list stores Integer objects (I’d still prefer to leave out the meaningless <String, Long>, of course).




Why is it legal to have 2 type arguments when ArrayList only has 1?




First, if you supply type arguments before the type, you should supply the correct number for the constructor, not for the class, so it hasn’t got anything to do with how many type arguments the ArrayList class has got. That really means that in this case you shouldn’t supply any since the constructor doesn’t take type arguments (it’s not generic). When you supply some anyway, they are ignored, which is why it doesn’t matter how many or how few you supply (I repeat, I don’t know why Java allows you to supply them meaninglessly).






share|improve this answer

























  • But how it is allowing 2 arguments <String, Long>.The list will allow storing which type of data?

    – jaspreet
    36 mins ago











  • Thanks for asking, @jaspreet. Please see my edit.

    – Ole V.V.
    25 mins ago













5












5








5







This is unusual alright, but fully valid Java. A class may have a generic constructor, for example:



public class TypeWithGenericConstructor 

public <T> TypeWithGenericConstructor(T arg)
// TODO Auto-generated constructor stub





I suppose that more often than not we don’t need to make the type argument explicit. For example:



 new TypeWithGenericConstructor(LocalDate.now(ZoneId.systemDefault()));


Now T is clearly LocalDate. However there may be cases where Java cannot infer (deduce) the type argument. Then we supply it explicitly using the syntax from your question:



 new <LocalDate>TypeWithGenericConstructor(null);


Of course we may also supply it even though it is not necessary if we think it helps readability or for whatever reason:



 new <LocalDate>TypeWithGenericConstructor(LocalDate.now(ZoneId.systemDefault()));


In your question you seem to be calling the java.util.ArrayList constructor. That constructor is not generic (only the ArrayList class as a whole is, that’s something else). Why Java allows you to supply type arguments in the call when they are not used, I don’t know, but it does. My Eclipse gives me a warning:




Unused type arguments for the non generic constructor ArrayList() of
type ArrayList; it should not be parameterized with arguments




But it’s not an error, and the program runs fine (I additionally get warnings about missing type arguments for List and ArrayList, but that again is a different story).




Does the positioning of the type arguments have the same meaning as
putting them after the type? If not, what does the different
positioning mean?




No, it’s different. The usual type argument/s after the type (ArrayList<Integer>) are for the generic class. The type arguments before are for the * constructor*.



The two forms may also be combined:



 List<Integer> list = new <String, Long>ArrayList<Integer>();


I would consider this a bit more correct since we can now see that the list stores Integer objects (I’d still prefer to leave out the meaningless <String, Long>, of course).




Why is it legal to have 2 type arguments when ArrayList only has 1?




First, if you supply type arguments before the type, you should supply the correct number for the constructor, not for the class, so it hasn’t got anything to do with how many type arguments the ArrayList class has got. That really means that in this case you shouldn’t supply any since the constructor doesn’t take type arguments (it’s not generic). When you supply some anyway, they are ignored, which is why it doesn’t matter how many or how few you supply (I repeat, I don’t know why Java allows you to supply them meaninglessly).






share|improve this answer















This is unusual alright, but fully valid Java. A class may have a generic constructor, for example:



public class TypeWithGenericConstructor 

public <T> TypeWithGenericConstructor(T arg)
// TODO Auto-generated constructor stub





I suppose that more often than not we don’t need to make the type argument explicit. For example:



 new TypeWithGenericConstructor(LocalDate.now(ZoneId.systemDefault()));


Now T is clearly LocalDate. However there may be cases where Java cannot infer (deduce) the type argument. Then we supply it explicitly using the syntax from your question:



 new <LocalDate>TypeWithGenericConstructor(null);


Of course we may also supply it even though it is not necessary if we think it helps readability or for whatever reason:



 new <LocalDate>TypeWithGenericConstructor(LocalDate.now(ZoneId.systemDefault()));


In your question you seem to be calling the java.util.ArrayList constructor. That constructor is not generic (only the ArrayList class as a whole is, that’s something else). Why Java allows you to supply type arguments in the call when they are not used, I don’t know, but it does. My Eclipse gives me a warning:




Unused type arguments for the non generic constructor ArrayList() of
type ArrayList; it should not be parameterized with arguments




But it’s not an error, and the program runs fine (I additionally get warnings about missing type arguments for List and ArrayList, but that again is a different story).




Does the positioning of the type arguments have the same meaning as
putting them after the type? If not, what does the different
positioning mean?




No, it’s different. The usual type argument/s after the type (ArrayList<Integer>) are for the generic class. The type arguments before are for the * constructor*.



The two forms may also be combined:



 List<Integer> list = new <String, Long>ArrayList<Integer>();


I would consider this a bit more correct since we can now see that the list stores Integer objects (I’d still prefer to leave out the meaningless <String, Long>, of course).




Why is it legal to have 2 type arguments when ArrayList only has 1?




First, if you supply type arguments before the type, you should supply the correct number for the constructor, not for the class, so it hasn’t got anything to do with how many type arguments the ArrayList class has got. That really means that in this case you shouldn’t supply any since the constructor doesn’t take type arguments (it’s not generic). When you supply some anyway, they are ignored, which is why it doesn’t matter how many or how few you supply (I repeat, I don’t know why Java allows you to supply them meaninglessly).







share|improve this answer














share|improve this answer



share|improve this answer








edited 28 mins ago

























answered 52 mins ago









Ole V.V.Ole V.V.

31.2k63956




31.2k63956












  • But how it is allowing 2 arguments <String, Long>.The list will allow storing which type of data?

    – jaspreet
    36 mins ago











  • Thanks for asking, @jaspreet. Please see my edit.

    – Ole V.V.
    25 mins ago

















  • But how it is allowing 2 arguments <String, Long>.The list will allow storing which type of data?

    – jaspreet
    36 mins ago











  • Thanks for asking, @jaspreet. Please see my edit.

    – Ole V.V.
    25 mins ago
















But how it is allowing 2 arguments <String, Long>.The list will allow storing which type of data?

– jaspreet
36 mins ago





But how it is allowing 2 arguments <String, Long>.The list will allow storing which type of data?

– jaspreet
36 mins ago













Thanks for asking, @jaspreet. Please see my edit.

– Ole V.V.
25 mins ago





Thanks for asking, @jaspreet. Please see my edit.

– Ole V.V.
25 mins ago



















draft saved

draft discarded
















































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.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55330697%2fjava-what-do-constructor-type-arguments-mean-when-placed-before-the-type%23new-answer', 'question_page');

);

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







Popular posts from this blog

名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局

Prove that NP is closed under karp reduction?Space(n) not closed under Karp reductions - what about NTime(n)?Class P is closed under rotation?Prove or disprove that $NL$ is closed under polynomial many-one reductions$mathbfNC_2$ is closed under log-space reductionOn Karp reductionwhen can I know if a class (complexity) is closed under reduction (cook/karp)Check if class $PSPACE$ is closed under polyonomially space reductionIs NPSPACE also closed under polynomial-time reduction and under log-space reduction?Prove PSPACE is closed under complement?Prove PSPACE is closed under union?

Is my guitar’s action too high? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)Strings too stiff on a recently purchased acoustic guitar | Cort AD880CEIs the action of my guitar really high?Μy little finger is too weak to play guitarWith guitar, how long should I give my fingers to strengthen / callous?When playing a fret the guitar sounds mutedPlaying (Barre) chords up the guitar neckI think my guitar strings are wound too tight and I can't play barre chordsF barre chord on an SG guitarHow to find to the right strings of a barre chord by feel?High action on higher fret on my steel acoustic guitar