我正在尝试在Android项目中使用Google的Speech API.示例项目有效.我在自己的Android应用程序中使用它时遇到了麻烦.
build.gradle(模块:app):
apply plugin: 'com.android.application'
apply plugin: 'com.google.protobuf'
ext {
supportLibraryVersion = '25.4.0'
grpcVersion = '1.4.0'
}
android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "ApplicationID"
minSdkVersion 16
targetSdkVersion 24
// compileOptions {
// sourceCompatibility JavaVersion.VERSION_1_5
// targetCompatibility JavaVersion.VERSION_1_5
// }
}
signingConfigs {
release {
storeFile file(project.properties.storeFile)
storePassword project.properties.storePassword
keyAlias project.properties.keyAlias
keyPassword project.properties.keyPassword
}
}
productFlavors {
dev {
// Minimum version with platform multi-dex support
minSdkVersion 21
}
prod {
// Minimum version that …Run Code Online (Sandbox Code Playgroud) java android google-cloud-platform google-speech-api google-cloud-speech
假设我的代码是,
class A {
void print() {
System.out.println('A');
}
}
class B extends A {
@Override
void print() {
System.out.println("B");
}
}
class C {
void print(A a) {
System.out.println("AA");
}
void print(B b) {
System.out.println("BB");
}
}
class test {
C c = new C();
c.print(new B()); // line 3
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,第3行打印"BB".如果我void print(B b)在C类中删除我的方法,那么第3行打印"AA".我知道多态,继承和传值的概念.我的问题是为什么引用类型new B()是类型的B,A当我删除C类中的方法时它是类型的.我错过了某种官方规则吗?在编译阶段和运行时阶段会发生什么?