«generics» 태그된 질문

신뢰할 수있는 유형의 설정을 런타임에 적용 할 수있는 메타 기술.


7
Java의 제네릭에 어떤 문제가 있습니까? [닫은]
이 사이트 게시물에서 Java의 제네릭 구현을 거부하는 몇 번을 보았습니다. 이제 나는 그것들을 사용하는 데 아무런 문제가 없다고 정직하게 말할 수 있습니다. 그러나 나는 일반 클래스를 직접 만들려고하지 않았습니다. 그렇다면 Java의 일반 지원과 관련하여 어떤 문제가 있습니까?
49 java  generics 

6
의미있는 클래스 이름으로 Java 콜렉션을 마스킹하는 좋은 방법 또는 나쁜 방법?
최근에 저는 인간 친화적 인 클래스 이름으로 Java 콜렉션을 "마스킹"하는 습관을 겪었습니다. 몇 가지 간단한 예 : // Facade class that makes code more readable and understandable. public class WidgetCache extends Map<String, Widget> { } 또는: // If you saw a ArrayList<ArrayList<?>> being passed around in the code, would you …

4
제네릭 악용이란 무엇입니까?
일부 코드를 검토하는 동안 제네릭을 사용하도록 코드를 변경할 수있는 기회를 발견했습니다. (난독 화 된) 코드는 다음과 같습니다. public void DoAllTheThings(Type typeOfTarget, object[] possibleTargets) { var someProperty = typeOfTarget.GetProperty(possibleTargets[0]); ... } 이 코드는 다음과 같이 제네릭으로 대체 될 수 있습니다. public void DoAllTheThings<T>(object[] possibleTargets[0]) { var someProperty = type(T).getProperty(possibleTargets[0]); ... } …
35 generics 

12
컨테이너에 일반 객체를 저장 한 다음 객체를 가져와 컨테이너에서 다운 캐스트하는 것이 코드 냄새입니까?
예를 들어, 플레이어의 능력을 향상시키는 몇 가지 도구가있는 게임이 있습니다. Tool.h class Tool{ public: std::string name; }; 그리고 몇몇 도구들 : Sword.h class Sword : public Tool{ public: Sword(){ this->name="Sword"; } int attack; }; Shield.h class Shield : public Tool{ public: Shield(){ this->name="Shield"; } int defense; }; MagicCloth.h class MagicCloth …

3
좋은 제네릭 형식 시스템
Java 제네릭이 몇 가지 중요한 방식으로 실패한 것으로 일반적으로 인정됩니다. 와일드 카드와 바운드의 조합으로 인해 읽을 수없는 코드가 생겼습니다. 그러나 다른 언어를 볼 때 프로그래머가 만족하는 일반적인 유형 시스템을 찾지 못하는 것 같습니다. 이러한 유형 시스템의 설계 목표로 다음을 고려하면 : 항상 읽기 쉬운 타입 선언을 생성합니다 배우기 쉬움 (공분산, …

8
C # Generics-중복 방법을 피하는 방법?
다음과 같은 두 개의 클래스가 있다고 가정합니다 (첫 번째 코드 블록과 일반적인 문제는 C #과 관련이 있음). class A { public int IntProperty { get; set; } } class B { public int IntProperty { get; set; } } 이러한 클래스는 어떤 식 으로든 변경할 수 없습니다 (타사 어셈블리의 일부 …
28 c#  generics 

1
<의 차이점은 무엇입니까? Foo> 및 <Foo> 확장
나는 사이의 차이에 대한 오해 것 같다 &lt;Foo&gt;와 &lt;? extends Foo&gt;. 우리가 이해했다면 ArrayList&lt;Foo&gt; foos = new ArrayList&lt;&gt;(); 이는 유형의 객체 Foo가이 배열 목록에 추가 될 수 있음을 나타냅니다 . 의 서브 클래스 Foo도 유형 Foo이므로 다음과 같이 오류없이 추가 할 수 있습니다. ArrayList&lt;Foo&gt; foos = new ArrayList&lt;&gt;(); foos.add(new Foo()); …
20 java  generics 

3
제네릭과 일반적인 인터페이스?
지난번에 일반 수업을 썼을 때 기억이 나지 않습니다. 내가 생각한 후에 생각이들 때마다 나는 그렇지 않다는 결론을 내린다. 이 질문에 대한 두 번째 대답 은 설명을 요구하게 만들었습니다 (아직 말할 수 없기 때문에 새로운 질문을했습니다). 제네릭이 필요한 경우를 예로 들어 주어진 코드를 보자. public class Repository&lt;T&gt; where T : class, …

4
누가 인터페이스를 확장합니까? 그리고 왜?
AFAIK, 클래스 extends부모 클래스 및 implements인터페이스. 그러나 나는 사용할 수없는 상황을 뛰어 넘습니다 implements SomeInterface. 제네릭 형식의 선언입니다. 예를 들면 다음과 같습니다. public interface CallsForGrow {...} public class GrowingArrayList &lt;T implements CallsForGrow&gt; // BAD, won't work! extends ArrayList&lt;T&gt; 여기서 사용하는 implements것은 구문 상 금지되어 있습니다. 먼저 &lt;&gt; 내부의 인터페이스를 사용하는 …

8
팀원들에게 일반적인 프로그래밍에 대한 인식을 확산시키는 방법?
나는 사람들이 믿는 환경에 머물고 있습니다. Java 제네릭은 실제 코딩이 아닌 라이브러리 작성 전용으로 사용되는 기능입니다. C ++는 OO 프로그래밍 언어입니다. template선택적이고 피할 수있는 기능입니다 그러나이 사람들은 일반적인 프로그래밍 (예 : STL, Java 컨테이너)을 사용하여 작성된 라이브러리에 크게 의존합니다. templates 또는을 사용하여 코드를 작성 generics하면 코드 검토자가 해당 코드를 거부 …
20 java  c++  templates  generics 

2
C #에 new () 제약 조건이 있지만 다른 유사한 제약 조건이없는 이유는 무엇입니까?
C # 제네릭에서는 형식 매개 변수 T가 기본 생성자를 갖도록 제약 조건을 선언 할 수 있습니다 where T : new(). 그러나 이와 같은 다른 제약 조건은 유효하지 않습니다 ( new(string)예 : 등). 언어 설계 및 / 또는 구현 관점에서 그 이유는 무엇입니까? 생성자가 작동하는 방식이나 유형 시스템이 구현되는 방식으로 이것을 …

4
Java-다형성 또는 경계 유형 매개 변수 사용
이 클래스 계층 구조가 있다고 가정하십시오 ... public abstract class Animal { public abstract void eat(); public abstract void talk(); } class Dog extends Animal { @Override public void eat() { } @Override public void talk() { } } class Cat extends Animal { @Override public void eat() { } …

2
상위 매개 변수 다형성이 유용합니까?
나는 모든 사람들이 일반적인 형식의 방법에 익숙하다고 확신합니다. T DoSomething&lt;T&gt;(T item) 이 기능은 PP (parametrically polymorphic), 특히 순위 1 PP 라고도 합니다. 이 방법이 다음 형식의 함수 객체를 사용하여 표현 될 수 있다고 가정 해 봅시다. &lt;T&gt; : T -&gt; T 즉, &lt;T&gt;하나의 유형 매개 변수를 사용하고 유형의 매개 T …

3
제네릭은 어떻게 구현됩니까?
이것은 컴파일러 내부 관점에서 질문입니다. 템플릿 (C ++)이 아닌 제네릭에 관심이 있으므로 C #으로 질문에 표시했습니다. AFAIK는 두 언어의 제네릭이 구현 방식이 다르기 때문에 Java가 아닙니다. 제네릭이없는 언어를 볼 때 매우 간단합니다. 클래스 정의의 유효성을 검사하고 계층 구조에 추가하면됩니다. 그러나 제네릭 클래스로 무엇을해야합니까? 더 중요한 것은 참조를 처리하는 방법입니다. 정적 …
16 c#  generics 

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.