Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Plasa de umbrire peste gard de pl...

O smecherie pe care nu o inteleg

Balcon parter fara acte

unde gasesc un speed bag in bucur...
 Programe TV cu altfel de sporturi

Laptop "bun la toate" max...

navigatie noua vw tiguan

ctfmon.exe - System Error (in Saf...
 Ați prins vremurile cand 120 Volț...

Whatsapp nu afișeaza numele ...

Medii admitere Politehnica Bucure...

Se extinde Baza de la Kogalniceanu
 Politist mutilat de caine in curt...

Trotineta- cat rezista?

Windows 11 si inregistrare de pe ...

Cont Facebook spart
 

Intrebare despre java 8

- - - - -
  • Please log in to reply
5 replies to this topic

#1
piramyd

piramyd

    Member

  • Grup: Members
  • Posts: 346
  • Înscris: 12.04.2007
Salut,

Intrebarea mea e simpla.
De ce nu pot sa inlocuiesc
IntToLongFunction converter = value -> value;
cu
IntToLongFunction converter2 = Function.identity();
sau macar cu
IntToLongFunction converter3 = Function::identity;
?

Merci!

#2
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,294
  • Înscris: 21.04.2004
Intrebarea mea e si mai simpla: de ce te-ai astepta sa poti inlocui?

#3
WinstonMontana

WinstonMontana

    Active Member

  • Grup: Members
  • Posts: 1,913
  • Înscris: 20.02.2018
prototipul functiei identity
static <T> Function<T,T> identity()


IntToLongFunction converter = value -> value;
Function<Integer,Long> pyramid = value -> Long.valueOf(value.longValue());


Edited by WinstonMontana, 19 June 2018 - 20:54.


#4
piramyd

piramyd

    Member

  • Grup: Members
  • Posts: 346
  • Înscris: 12.04.2007
Dupa ce am incercat cateva lucruri, am aflat si raspunsul.
Autoboxing/autounboxing functioneaza doar cu tipuri primare daca se face conversie de la un tip de data mai mic la unul mai mare. Dar nu functioneaza si la Numbers.

Adica:
import java.util.function.IntToLongFunction;
public class Main {
	static long functioneaza(int a){
		return a;
	}
	static Long functioneaza2(Integer a){
		return a.longValue();
	}
	static long functioneaza3(long a){
		return a;
	}
	//static Long nuFunctioneaza(Integer a){
		//return a;
	//}
	static Long nuFunctioneaza2(Long a){
		return a;
	}
	public static void main(String[] d){
		int a = 100;
		long b;
		IntToLongFunction converter1 = Main::functioneaza;
		IntToLongFunction converter2 = Main::functioneaza2;
		//IntToLongFunction converter3 = Main::nuFunctioneaza;
		//de asta ma asteptam sa functioneze:
		IntToLongFunction converter4 = Main::functioneaza3;
		//dar nu functioneaza
		//IntToLongFunction converter5 = Main::nuFunctioneaza2;
		b = converter1.applyAsLong(a);
		b = converter2.applyAsLong(a);
		b = converter4.applyAsLong(a);
	}
}


Edited by piramyd, 21 June 2018 - 14:57.


#5
WinstonMontana

WinstonMontana

    Active Member

  • Grup: Members
  • Posts: 1,913
  • Înscris: 20.02.2018

View Postpiramyd, on 21 iunie 2018 - 14:47, said:

Dupa ce am incercat cateva lucruri, am aflat si raspunsul.
Autoboxing/autounboxing
Autoboxing/unboxing
autoboxing = de la primitiva la obiect care contine primitiva + metadate + metode de transformare a primitivei
unboxing = inversul lui autoboxing
atentie: nu este typecasting
Daca  erai atent la ce ti-am spus in postul anterior, mai ales la asta in special:

View PostWinstonMontana, on 19 iunie 2018 - 20:43, said:

Function<Integer,Long> pyramid = value -> Long.valueOf(value.longValue());

nu mai trebuia sa te invarti precum catzelul in jurul cozii pana ametesti.

Hai cu alt exemplu:

import java.util.function.*;
public class HW{
static Function<Double,Long> pyramid = (x) -> Long.valueOf(x.longValue());
public static void main(String []args){
	 System.out.println(
		 pyramid.apply(100.23)
	 );
}
}


Result:
$javac HW.java
$java -Xmx128M -Xms16M HW
100

Hai sa citim si putina documentatie inainte sa ne invartim pana ametim:
https://docs.oracle....ang/Double.html

Edited by WinstonMontana, 01 July 2018 - 07:23.


#6
piramyd

piramyd

    Member

  • Grup: Members
  • Posts: 346
  • Înscris: 12.04.2007
@WinstonMontana, multumesc de explicatii, dar stiam tot ce ai scrit tu, si inteleg.
Poate nu m-am exprimat eu bine, dar ca sa intelegi care era problema mea (la care intre timp am gasit raspunsul, si e unul simplu).
Daca te uiti la codul scris de mine, o sa vezi ca poti sa faci asta:
IntToLongFunction converter4 = Main::functioneaza3;
dar nu poti sa faci asta:
IntToLongFunction converter5 = Main::nuFunctioneaza2;

Iar explicatia pe care am gasit-o eu, e simpla si nu stiu de ce nu am vazut-o pe moment: java face automatic type casting de la tipuri de date primare mai mici la tipuri de date primare mai mari (de la int la long).
Dar nu face type casting intre obiecte (de la Integer la Long).

Merci, salut!

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate